FoxPro/Visual FoxPro - codigo para consultar tabla dbf foxpro

   
Vista:

codigo para consultar tabla dbf foxpro

Publicado por RAMON (18 intervenciones) el 14/04/2013 03:05:50
Buenas amigos!!!
tengo un dbf ya echo y esta en otra carpeta, la copie en mi carpeta del sistema, este dbf tiene varias columnas campos, pero solo 2 columnas lo que quiero consultar, primeracolumna segundacolumna.

Tengo dos TEXT, en el primer TEXT quiero colocar un dato (números) y quiero que busque en la tabla (tabla_clientes) primeracolumna, si encuentra el dato quiero que refleje el valor de la segundacolumna (campo) en el TEXT2.

SELECT tabla_clientes
LOCATE FOR primeracolumna == Thisform.Text1.Value
IF.NOT.FOUND()
MESSAGEBOX("No se encontró")
ELSE
Thisform.Text2.Value=tabla_clientes.segundacolumna
Endif


Utilice este código, pero me dice que no existe la tabla o sea que el ALIAS no existe, mi tabla se llama "tabla_clientes.dbf" y ya tiene informaciones dentro en fox utilice la opción agregar y agrego la tabla a mi proyecto

El código lo puse en el evento Valid o InteractiveChange, pero no me funciona.

Disculpen mi ignorancia estoy empezando y por eso de repente no me expreso muy bien.

Gracias!!!

Ramón
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

codigo para consultar tabla dbf foxpro

Publicado por Saul (676 intervenciones) el 14/04/2013 08:09:56
Hola Ramon:

No te preocupes por algo se inicia.
Mira te explico los pasos
1.- En tu FORM
hay eventos (procedures) ya predeterminados e incluso puedes hacer tus propios
hay un evento que se llama INIT
allí puedes iniciar abriendo tu tabla

USE C:\TuProyecto\tabla_clientes.dbf IN 0 SHARED

2.- Previo a esto tendrías que haber hecho un indice a tu tabla
revisa la ayuda como hacer tus indices

3.- Pero siguiente tu ejemplo que no es lo ideal (hazlo con indices)
SELECT tabla_clientes
LOCATE FOR primeracolumna == Thisform.Text1.Value
IF.NOT.FOUND()
MESSAGEBOX("No se encontró")
ELSE
Thisform.Text2.Value=tabla_clientes.segundacolumna
Endif

Con esto te funcionara.

Saludos

Sha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

codigo para consultar tabla dbf foxpro

Publicado por RAMON (18 intervenciones) el 14/04/2013 14:23:19
Hola man.. antes que nada te agradezco por tu valioso tiempo, lo siguiente
He colocado esos dos códigos, uno en INIT del form y el otro en VALID del TEXT, pero me aparece un error al querer consultar, aparece lo siguiente:

Incompatibilidad entre el tipo de operador y el tipo de operando

Y también le doy Aceptar y aparece el mensaje de "No se encontró" que le colocamos en el código.

Agradecería una ayudita mas.

Gracias

Ramón
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

codigo para consultar tabla dbf foxpro

Publicado por Fidel (558 intervenciones) el 14/04/2013 16:53:32
1) Si tu tabla es una tabla libre seguramente el campo (columna) no se llamará "Primeracolumna". Solo admite 10 caracteres. Debes colocar los nombres de los campos de la tabla.

2) Si buscas con el comparador exacto "==", entonces estás buscando un Tipo Character y sería
locate for Colu1==alltrim(thisform.text1.value) (en general, usa Alltrim(thisform.text1.value). Piensa que el textbox tiene espacios al final de la cadena. Y podría tenerlos antes, si es un tipo texto.

3) Si el tipo de dato que buscas es numérico, no corresponde el comparador exacto.
En este caso sería
LOCATE FOR Colu1=Thisform.text1.Value (ambos tipos Numéricos ó Interger)

4) El error que te da significa que el valor del text1 es un tipo de dato distino del de la tabla. Por ejemplo, la tabla tiene tipo "C" y el Text1 da un valor numérico, o viceversa. Debes ajustar el control text1 para que el tipo de dato sea igual que el que buscas en la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

codigo para consultar tabla dbf foxpro

Publicado por RAMON (18 intervenciones) el 14/04/2013 17:04:53
HOla amigo!!

mi tabla se llama COMEBAK.DBF
Los cuadros de texto son : 1 Text3 2 txtCodigo

El nombre de la columna donde quiero buscar se llama NRO_FACT
El nombre de la columna que quiero que coloque el resultado en el txtCodigo se llama SOLD_TO

NRO_FACT = NUMERICO
SOLD_TO = CARACTER

como seria el código?

mi tabla esta en una carpeta llamada c:\datos
esta tabla no esta en mi carpeta del proyecto esta en otra carpeta, pero con el código que me paso Saul para llamar a la tabla funciona hasta ahi, pero al consultar me da el error que ya mencione mas arriba
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

codigo para consultar tabla dbf foxpro

Publicado por RAMON (18 intervenciones) el 14/04/2013 17:13:23
Este es el código q va en VALID del TEXT3

SELECT Comebak
LOCATE FOR Nro_fact = ALLTRIM(UPPER(Thisform.Text3.Value))
IF.NOT.FOUND()
MESSAGEBOX("No se encontró")
ELSE
Thisform.txtCodigo.Value=Comebak.Sold_to
ENDIF


aun asi no me funciona, Gracias
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

codigo para consultar tabla dbf foxpro

Publicado por Saul (676 intervenciones) el 15/04/2013 05:53:28
Hora Ramon..


Veo que andas algo perdido, no tengo idea que clase de proyecto quieras hacer, pero mándame un correo.
Yo tengo un ejemplos sencillo, te lo puedo enviar para que vallas comprendiendo como es programar en Vfp.

1.- Es con tablas libres
2.- Esta desarrollado en visual fox 6
3.- Tiene todo lo que necesitas para iniciar..

Saludos

me lo puedes enviar a saul_ha@hotmail.com

Att.

Saúl Hernández Aguilar
Guatemala
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

codigo para consultar tabla dbf foxpro

Publicado por Fidel (558 intervenciones) el 15/04/2013 13:40:32
1
2
3
4
5
6
7
8
9
10
NRO_FACT = NUMERICO
SOLD_TO = CARACTER
 
SELECT Comebak
LOCATE FOR Nro_fact = ALLTRIM(UPPER(Thisform.Text3.Value))   ERROR
IF.NOT.FOUND()
MESSAGEBOX("No se encontró")
ELSE
Thisform.txtCodigo.Value=Comebak.Sold_to
ENDIF


1) En el text3, debes poner un cero como Value (en diseño). Con eso, el TExt3 tomará valores numéricos. Tambien puedes usar InputMask="99999999" para que no te muestre espacios decimales y puedes usar Format="Z" para que no te muestre un cero como valor inicial.
En la búsqueda de Valid
LOCATE FOR nro_Fac=this.value (si es el Valid de text3, la referencia es This)

2) Si dejas el text3 como viene por defecto, en la búsqueda de Valid, debes transformar el valor, porque el Value será de tipo Character.

LOCATE FOR nro_Fac = VAL(ALLTRIM(THIS.VALUE)) && transforma en un valor numérico.

3) En cuanto a la disponibilidad de la tabla, asegúrate de abrirla en el Load del Form, salvo que uses el DataEnviroment. No se como lo tienes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar