FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Combobox para llenar DBf
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Combobox para llenar DBf
Posted: Fri Dec 02, 2011 05:01 PM

Buenas tardes,

Alguno de ustedes me podria ayudar con esto: Necesito llenar un campo de una Dbf desde un Combobox. Ya intente usar el DBCombo pero debo crear una DBf para sus valores. La idea es cargar los valores del Combobox desde un array y tambien que permita visualizar el registro ya cargado al momento de modificar.

Atento a sus comentarios

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 139
Joined: Sun Apr 23, 2006 09:00 AM
Re: Combobox para llemar DBf
Posted: Tue Dec 06, 2011 10:09 AM

local aMeses := {"Enero", "Febrero", "Marzo", ...}, oCbx, cMes := ""

REDEFINE COMBOBOX oCbx VAR cMes ITEMS aMeses ID ID_MES OF oDlg
...

if lSave
ARCHIVO->CAMPO := cMes

Un saludo,

Fernando

Las Palmas de Gran Canaria
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Combobox para llenar DBf
Posted: Tue Dec 06, 2011 12:07 PM

MIl gracias!!!

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: Combobox para llemar DBf
Posted: Tue Dec 06, 2011 12:22 PM
Compuin;
Si entiendo tu consulta, lo hago as铆:

Code (fw): Select all Collapse
聽 聽REDEFINE DBCOMBO aO[_CmbM2] VAR cIDDoc ID 101 OF aO[_DlgM] UPDATE ;
聽 聽 聽 聽 聽 聽 ALIAS 聽 聽 ::oDbTDoc:cAlias ;
聽 聽 聽 聽 聽 聽 ITEMFIELD "FDOC01" 聽 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 LISTFIELD "FDOC02" 聽 聽 聽 聽 ;
聽 聽 聽 聽 聽 聽 ON CHANGE ...

// Boton para agregar registros a la DBF que muestra el DBcombo
聽 聽REDEFINE BTNBMP aO[_BtDocs] ID 520 OF aO[_DlgM] NOBORDER ;
聽 聽 聽 聽 聽 聽 RESOURCE "bmp_AbreTb1" 聽;
聽 聽 聽 聽 聽 聽 TOOLTIP 聽"Abre Tabla Tipo de Documentos" ;
聽 聽 聽 聽 聽 聽 ACTION 聽 if( !Empty( cDescAdic:= oSelf:TbAdicionales( _TBDOCTIPO ) ), aO[_CmbM2]:Update(), ) 聽 // Aca llamo a una rutina con un Browse q despliega las descripciones mostradas en el DBCombo
// Luego, con los botones "Agrega/Edita", de esta rutina, habro un Dlg donde agrego/edito, segun la necesidad, a la DBF.
// Al volver actualizo el DBCombo con aO[_CmbM2]:Update() y aO[_CmbM2]:Refresh()

y se v茅 as铆:
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Combobox para llenar DBf
Posted: Tue Dec 06, 2011 12:33 PM

Gracias MarioG,

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 139
Joined: Sun Apr 23, 2006 09:00 AM
Uso de DbCombo.
Posted: Tue Dec 06, 2011 03:20 PM

Hola.
Vamos, a ver, en un entorno de tablas, el uso de dbCombo s贸lo es comprensible siempre y cuando mantengas un n煤mero peque帽o de registros. 驴Por qu茅? Porque te los carga en un array. Si tengo 10 贸 20 registros en la tabla, pues bien, pero cuando tienes 800, 1000 o 5000 registros no es comprensible su uso. Adem谩s, siempre que a帽adas o elimines un registro debes borrar y recargar la tabla para que lo mostrado sea lo real.
En definitiva, si tienes que darle al usuario la opci贸n a elegir, te creas una ventana con un browse de la tabla y santas pascuas.
Otra cosa que echo en falta es el uso de la notaci贸n h煤ngara en los nombres de variables, funciones, etc.
Un saludo,
Fernando

Un saludo,

Fernando

Las Palmas de Gran Canaria
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Combobox para llenar DBf
Posted: Tue Dec 06, 2011 03:59 PM

En el caso que me presentas el combobox agrega al campo de la dbf el valor del array (Seria la rutina de Incluir) . Como puedo cargar desde el dbf al combobox para actualizar?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Combobox para llenar DBf
Posted: Tue Dec 06, 2011 07:02 PM
Hola

para eso deberas modificar la Clase dbCombo

Code (fw): Select all Collapse
REDEFINE DBCOMBO aGet[id_tipot] 聽 聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 聽 VAR _tipot聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 聽 ID id_tipot OF PAGE1 UPDATE聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 聽 COLOR CLR_BLACK, RGB( 255,255,200)聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 聽 ALIAS "TABLAS"聽 聽聽 聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 聽 ITEMFIELD "COD_TABLA"聽 聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 聽 LISTFIELD "NOM_TABLA" 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽聽聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ;
聽 聽 聽 聽 CONDICION ( Tablas->( OrdsetFocus( "NOMTABLA" ) ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Tablas->( OrdScope( 0, "OTE" ) ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Tablas->( OrdScope( 1, "OTE" ) ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Tablas->( AdsSetAof( "sucursal="+str(nSucursal,1) ) ) );
聽 聽 聽 聽 FINCONDICION ( Tablas->( OrdScope( 0, NIL ) ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Tablas->( OrdScope( 1, NIL ) ), Tablas->( AdsClearAof() ),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Tablas->( OrdsetFocus( "TIPTABLA" ) ) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽)聽 ;
聽 聽 聽 聽 FOR Tablas->Nom_Tabla = "Neumaticos";
聽 聽 聽 聽 NOBLANK


si quieres actualizar el dbCombo, solo haces aGet[id_ot]:Update() y te refresca el combo con los datos actualizados
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl

Continue the discussion