Página 1 de 1

Preencher com dados do dbf em um combobox

Enviado: 10 Fev 2010 13:41
por marcos.gurupi
Como eu faco no exemplo abaixo preencher os dados de um combobox com os dados de um dbf?

iEmpAtiva:={"EMPRESA 1","Empresa 2","Empresa 3"}

@ 18,15 GET COMBOBOX oEmpAtiva VAR vEmpAtiva ITEMS iEmpAtiva SIZE 655,300 STYLE CBS_UPPERCASE COLOR 255 FONT HFont():Add( 'Courier New',0,-13,700,,,)

Marcos Roberto

Re: Preencher com dados do dbf em um combobox

Enviado: 10 Fev 2010 15:02
por Toledo
Marcos, basta adicionar na matriz o campo com o nome das empresas, por exemplo:

Código: Selecionar todos

DO WHILE !EOF()
  AADD(iEmpAtiva,EMPRESA)
  SKIP
ENDDO
EMPRESA é nome do campo do DBF onde está o nome da empresa.

Abraços,

Re: Preencher com dados do dbf em um combobox

Enviado: 12 Fev 2010 12:13
por sygecom
Ou em tempo de execução:

Código: Selecionar todos

********************************************
FUNCTION RECARREGA_COMBO_UF(vP1,oOBJ,aARRAY)
********************************************
Local aItens_CID_TEMP:=CARREGA_CIDADES_UF(vP1)
DO WHILE .T.
   FOR nI := 1 TO Len(aARRAY)
      ADel( aARRAY, nI, .T. )
   NEXT
   IF Len(aARRAY) <= 0
      EXIT
   ENDIF
ENDDO
FOR nI := 1 TO Len(aItens_CID_TEMP)
   AADD(aARRAY,aItens_CID_TEMP[nI,1])
NEXT
IF LEN(aARRAY) > 0
   oOBJ:aItems:= aARRAY
   oOBJ:Requery()
   oOBJ:Setitem(1)
ENDIF
Return(aARRAY)

Re: Preencher com dados do dbf em um combobox

Enviado: 13 Fev 2010 00:58
por marcos.gurupi
Obrigado amigos!!

Marcos Roberto.

Re: Preencher com dados do dbf em um combobox

Enviado: 13 Fev 2010 09:07
por esbasso
a combobox tem suporte direto ao campo do dbf, basta apenas colocar o nome do campo com alias na frente

@ 18,15 GET COMBOBOX oEmpAtiva VAR vEmpAtiva ITEMS {"empresa->campo"} SIZE 655,300 STYLE CBS_UPPERCASE COLOR 255 FONT HFont():Add( 'Courier New',0,-13,700,,,)

ou ainda

@ 18,15 GET COMBOBOX oEmpAtiva VAR vEmpAtiva ITEMS {"cidades->cidade","cidades-codigo"} SIZE 655,300 STYLE CBS_UPPERCASE COLOR 255 FONT HFont():Add( 'Courier New',0,-13,700,,,)

cria a combobox com array de 2 colunas podendo ser pego o valor do codigo ,apesar de se mostrar as cidades

exemplo
SUPONDO QUE O ARQUIVO CIDADES TENHA UM INDICE POR ESTADO

FUNCTION cidades

LOCAL, vCombo1 := 1, vCombo2 := 1
LOCAL oCombo1, oCombo2 , oLabel2, oLabel3

DBSELECTAREA('cidades')
DBSETORDER(1)
DBSEEK("RS")
ORDSCOPE(0,"RS")
ORDSCOPE(1,"RS")
DBGOTOP()


@ 182,110 SAY oLabel2 CAPTION "UF:" SIZE 28,19
@ 219,107 GET COMBOBOX oCombo2 VAR vCombo2 ;
ITEMS {[RS],"SC","PR"} TEXT ;
SIZE 82,23 ;
ON CHANGE {|value,This| oCombo2_onChange( value,This ) } ;
ON INIT {|This| THIS:LTEXT:=.T. }
@ 151,139 SAY oLabel3 CAPTION "Cidades:" SIZE 61,19
@ 221,136 GET COMBOBOX oCombo1 VAR vCombo1 ;
ITEMS {[cidades->cidade]} ;
SIZE 299,23 DISPLAYCOUNT 20

ACTIVATE DIALOG oDlg


STATIC FUNCTION oCombo2_onChange( value,This )

DBSEEK(THIS:VALUE)
ORDSCOPE(0,THIS:VALUE)
ORDSCOPE(1,THIS:VALUE)
GO TOP
ThisForm:oCombo1:REQUERY()

RETURN Nil