Mostrar registros numéricos en un grid

Tengo un form con un textbox, 4 commandbuton y un grid, con un botón busco por apellidos(C), con el segundo busco por ide del proveedor (N,2) y con el tercero busco por dni(N,9), cargo los registros en un cursor y los muestro en el grid, mi problema es cuando busco por dni, tengo que escribir en el textbox los 8 números del dni, lo que quiero hacer es que cargue en el cursor por ejemplo todos los dni cuyo primer digito sea 2 o si escribo 24 carge el cursor con todos los dni cuyo 2 primeros digitos sean 24, te acompaño el codigo que busca por dni, para que me orientes donde esta la falla, gracias de antemano :

PUBLIC xBuscar
xBuscar=ALLTRIM(thisform.textBuscar.Value)
VAL(xBuscar)
SELECT 1
USE plani_dia
SET ORDER TO DNI && DNI
SELECT cCursor
APPEND FROM plani_dia FOR DNI=VAL(xBuscar)
THISFORM.Grid1.RecordSourceType=4
THISFORM.Grid1.RecordSource="cCursor"
thisform.Grid1.Refresh()

La apertura de la BD y el Create cursor lo tengo en el INIT del form

1 respuesta

Respuesta
1

Espero poder ayudarte. Para eso, en mi humilde opinión (no es la única ni la mejor) debes primero cargar un cursor con todos los datos de la tabla y luego indicar que un valor sea buscado en toda la cadena de caracteres por registro de tu campo.

Imagina que ya cargaste el cursor con los datos de tu tabla, entonces va así:

SELECT cCursor

SET FITLER TO ALLTRIM(THISFORM.Text1.Value) $ ALLTRIM(STR(cCursor.campo))

THISFORM. Refresh

Proba y me avisas! :)

Gracias Ravven por contestar a mi pregunta, te digo funciona, pero no como yo quisiera, cuando ingreso el primer numero al Textbox, en la grid aparecen todos los registros, recién en el ingreso del tercer registro comienza filtrar, pero aparecen otros registros que no son el primer o segundo numero digitado, porque lo que deseo es saber cuantos dni comienzan con el 1 o el 2, etc., aquí te envío el código que instale en el InteractiveChange :

SELECT cCursor
INDEX ON dni TO tempdni
SET FILTER TO ALLTRIM(THISFORM.Text1.Value) $ ALLTRIM(STR(cCursor.dni))
thisform.Grid1.RecordSourceType = 1
thisform.Grid1.RecordSource = "cCursor"
GO TOP
THISFORM.Text1.SetFocus
THISFORM.Refresh

El cCursor lo creé en el Init del form y desde el InteractviChange lo llamo, todo perfecto, te agradeceria tu ayuda, otra ayudita el SETFocus no funciona.

Cambia el $ por un = en la linea del filtro. Así debe quedarte esa linea:

SET FILTER TO ALLTRIM(THISFORM.Text1.Value) = ALLTRIM(STR(cCursor.dni))

El resto todo igual! :)

Saludos! :D

No no no! Espera! El cambio correcto de la linea es así:

SET FILTER TO ALLTRIM(STR(cCursor.dni)) = ALLTRIM(THISFORM.Text1.Value)

Ahora si! :D :D Proba y me avisas! :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas