¿Cómo tomo los campos de una tabla?

Buenos días expertos, estoy trabajando con una tabla, lo que necesito es tomar los campos de cada registro, ¿no se como hacerlo?. Se me había ocurrido cargar una matriz con la tabla, ¿de ser viable esta solución como lo hago en código?. La cantidad de registros en la tabla es variable.
Desde ya muchas gracias por su tiempo.

1 Respuesta

Respuesta
1
¿A qué te refieres cuándo dices "Tomar" los datos de una tablas?.
Te explico, supongamos que tengo una tabla de 2 columnas que esta cargada con datos y yo necesito de la primera linea sacar el dato1 de la columna1 luego el dato2 de la columna2 y después seguir con la siguiente linea y así sucesivamente...
Lo único que se me ocurrió es pasar los datos de la tabla a una matriz para poder tomar los datos, con "copy to array" y después trabajar con la matriz dentro de un do while y tomar los valores:
do while
mimatriz(i,j)
endo
Pero tampoco se como se trabaja con matrices en visual fox pro
Te agradecería si me podes ayudar, espero haber sido clara. Gracias
Hola, ¿estuve probando recorrer la tabla directamente con un scan y no pasar la tabla a una matriz y puse un messagebox para ver que fuera campo por campo pero cuando agrego código no me toma los campos?
Así funciona:
USE sol
SELECT sol
SCAN
thisform.txt1.value=campo1
thisform.txt2.value=campo2
MESSAGEBOX('Fecha inicial: '+dtoc(campo3), 0+64+0, 'Información')
thisform.cmdVer.Click
Endscan
Pero si agrego código entro del scan cuando pasa al siguiente registro no reconoce los campos, ¿a qué se debe? Me los tomara como variable y no como los campos de la tabla sol
El error que sale es: No se encuentra la variable "campo1", No se encuentra la variable "campo2"
Desde ya muchas gracias
Disculpa me equivoque al escribir el messagebox es así:
MESSAGEBOX('Fecha inicial: '+dtoc(campo2), 0+64+0, 'Información')
Me parece que el problema por el cual no avanza al siguiente registro se debe al segundo USE.
Use mi tabla1
scan
...
Use mi tabla2
...
Endscan
Al abrir la tabla2 se cierra la tabla1 y por eso no avanza al siguiente registro.
¿Cómo podría solucionar esto? Soy nueva en visual foxpro y el tema de áreas de trabajo no lo manejo muy bien.
Gracias por tu tiempo
Disculpa la tardanza pero estaba de vacaciones y me desconecté de todo.
Bueno lo único que se me ocurre es que vayas almacenando el numero de registro en una variable publica.
Coloca en el init del form.
Public Var1, Var2
Var1=0
Var2=0
Y conforme Vayas avanzando le vas sumando un valor a cada variable
Var1=Var1+1
Var2=Var2+1
Y para colocar el puntero en registro especifico utiliza Go record (Nombre_de_Variable)&&En este caso seria Var1
Cualquier duda preguntas.
***Suerte***
Hola disculpa no entiendo para que las variables.
Mi problema ahora es que no se mueve el puntero de registro por la tabla, ya que cuando entra por primera vez al bucle no hay problema pero cuando entra de nuevo al scan, es como que la tabla se cierra y por eso no pasa al otro registro, creo que esto se debe a que dentro del scan abro otra tabla para hacer consultas a través del USE. No se como solucionarlo, desdés ya muchas gracias.
Mi código es así:
Tengo dos tablas: mitabla1(campo1,campo2) y mitabla2(campoA,campoB)
USE mitabla1
SELECT mitabla2
SCAN
thisform.txt1.value=campo1
thisform.txt2.value=campo2
use mitabla2
select mitabla2
.........*Aca hago consultas a mitabla2
Endscan
Ok. Te explico... Al seleccionar una tabla el puntero va al primer registro... Bueno por eso puedes utilizar las variables para ir al siguiente registro Pero no utilices SCAN Es algo más o menos así:
Primero en el evento init del formulario estableces las variables como publicas.
Public Var1, Var2
Var1=1
Var2=1
Luego colocas Un código más o menos así como este, en el Botón o donde tu desees
USE Nombredetabla
GO RECORD (Var1)
thisform.txt1.value=campo1
thisform.txt2.value=campo2
Var1=Var1+1&&Esto es para que vaya aumentando y por ende cuándo utilizes "GO RECORD" se dirija el puntero al registro siguiente
Prueba con esto y me avisas.
***Suerte***
Hola. Probé lo que me dijiste pero no avanza al siguiente registro entonces lo puse dentro de un do while
USE mitabla1
go top
DO WHILE var1<= RECCOUNT('mitabla1')
IF EOF( )
EXIT
ENDIF
GO RECORD (var1)
GO RECORD (var2)
thisform.txt1.Value=campo1
thisform.txt2.Value=campo2
var1=var1+1
var2=var2+1
use mitabla2
thisform.cmdboton1.Click
USE IN (SELECT("mitabla2"))
enddo
Pero... cuando se terminaban los registros seguía el bucle le puse NOT EOF() como no me funciono entonces conté las cantidad de registros de la tabla: DO WHILE var1<= RECCOUNT('mitabla1') y se soluciono. El tema ahora es que cuando pasa al siguiente registro cuando llega a la linea GO RECORD (var1) me pide que abra la tabla mitabla1 de nuevo porque aparentemente se me cerro cuando cerré la mitabla2 en la linea que dice USE IN (SELECT("mitabla2")), es síntesis no puede pasar al siguiente registro porque mitabla1 se cierra antes. ¿Qué puedo hacer?
Desde ya gracias.
El problemas es que vfp utilizará la ultima tabla que abriste o seleccionaste... Tendrías que utilizar selec para estar seleccionando la tabla1 que tienes, si tu deseas puedes enviarme los forms y las tablas que utilizas para darles una revisadita, este es mi dirección de E-Mail: [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas