FoxPro/Visual FoxPro - Como Ordeno registros nuevos o cambios de los mismos en un combo, dentro de Visual Fox Pro 9

   
Vista:

Como Ordeno registros nuevos o cambios de los mismos en un combo, dentro de Visual Fox Pro 9

Publicado por Juan Manuel (1 intervención) el 09/04/2013 21:40:57
Soy programador novato me pueden ayudar.

En Visual Fox Pro 9.Como ordeno registros nuevos o cambios de registros existentes en una tabla dbf, en la tabla y en un combo que consulta la misma tabla me aparecen al final de la lista y necesito que me parezcan ordenados alfabéticamente.

Gracias.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como Ordeno registros nuevos o cambios de los mismos en un combo, dentro de Visual Fox Pro 9

Publicado por Fidel (558 intervenciones) el 10/04/2013 00:51:31
Si RowSourceType=2 (Alias), la tabla ó cursor debe estar indexada por el campo que se muestra.
Mira este ejemplo donde se supone que el combobox se llama "Combo1"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
IF USED("LFCOMBO")
	SELECT LFCOMBO
	USE
ENDIF
CREATE CURSOR LFCOMBO ("NOMBRE" C(40),"TEMA" C(20))
SELECT LFCOMBO
INSERT INTO LFCOMBO (NOMBRE,TEMA) VALUES("ABEJA","PICA")
INSERT INTO LFCOMBO (NOMBRE,TEMA) VALUES("VACA","MUGE")
INSERT INTO LFCOMBO (NOMBRE,TEMA) VALUES("LEON","RUGE")
INSERT INTO LFCOMBO (NOMBRE,TEMA) VALUES("PERRO","LADRA")
INSERT INTO LFCOMBO (NOMBRE,TEMA) VALUES("GATO","MAULLA")
INDEX on nombre TAG nnom
WITH THISFORM.COMBO1
	.RowSourceType= 2
	.RowSource="lfcombo"
	.requery
ENDWITH
 
&& LostFocus del ComboBox
LcValue=UPPER(ALLTRIM(this.Text))
IF !EMPTY(LCvALUE)
	IF !INDEXSEEK(lcValue,.f.,"LFCOMBO","NNOM")
		SELECT LFCOMBO
		APPEND BLANK
		REPLACE NOMBRE WITH LCVALUE
		THIS.Requery
	ENDIF
ENDIF


Otra forma es trabajar el combobox con AddListItem("cItem",nFila,nCol), con la propiedad Sorted=.t.
Pero si agregas registros en la tabla tendrás que crear un método en el formulario y utilizar eso.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
* Init del Form, después de crear el cursor LFCOMBO
 
Thisform.GenCombo()
 
* METODO GENCOMBO()
* ----------------------------------
* llamar con Thisform.GenCombo()
SELECT LFCOMBO
GO TOP
IF !PEMSTATUS(thisform,"VCOMBO",5)
	ADDPROPERTY(thisform,"VCOMBO",TRIM(LFCOMBO.NOMBRE))
ENDIF
 
nit=0
WITH thisform.Combo1
	.clear
	.RowSourceType=0
	.RowSource=""
	.Sorted=.t.
	.bOUNDCOLUMN=1
	.ControlSource='thisform.vCombo'
	SELECT lfCombo
	SCAN
		nit=nit+1
		.AddListitem(TRIM(nombre),nit,1)
		.ADdListitem(TRIM(tema),nit,2)
 
	ENDSCAN
	.requery
	.refresh
endwith
 
&& ComboBox.LostFocus
LcValue=UPPER(ALLTRIM(this.Text))
IF !EMPTY(LCvALUE)
	IF !INDEXSEEK(lcValue,.f.,"LFCOMBO","NNOM")
		SELECT LFCOMBO
		APPEND BLANK
		REPLACE NOMBRE WITH LCVALUE
		THISFORM.VCOMBO=LCVALUE   && mantiene la selección del item ingresado.
		THISFORM.GENCOMBO()   && llamada que regenera el ComboBox
	ENDIF
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar