Foros del Web » Programación para mayores de 30 ;) » Programación General »

Saber el tipo de campo en Fox 9

Estas en el tema de Saber el tipo de campo en Fox 9 en el foro de Programación General en Foros del Web. Que tal amigos foreros soy algo nuevo en fox y me etopado con un problemita. Lleno un cursor pormedio de una consulta sql que seria ...
  #1 (permalink)  
Antiguo 10/01/2007, 18:52
 
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 17 años, 7 meses
Puntos: 1
Exclamación Saber el tipo de campo en Fox 9

Que tal amigos foreros soy algo nuevo en fox y me etopado con un problemita.

Lleno un cursor pormedio de una consulta sql que seria mi curCoRders luego por medio de otra consulta a SQL Lleno otro cursor que seria mi curCoRders1 lo que quiero es ir comparando columna por columna y fila por fila entre los dos cursores hasta ahi todo bien el problema es que tengo que mostrarlos en un WAIT WINDOW el codigo lo tengo de la siguiente manera:

SELECT curCoRders
GO TOP
SELECT curCoRders1
GO TOP

DO WHILE !EOF()

ndcampo=0

FOR i=1 TO 37 STEP 1
ndcampo=ndcampo+1
vNombre1="curCoRders.Campo"+ALLTRIM(STR(ndcampo))
vNombre2="curCoRders1.Campo"+ALLTRIM(STR(ndcampo))

IF NVL(&vNombre1, "") != NVL(&vNombre2, "")
WAIT WINDOW "Son diferentes: " + &vNombre1 + &vNombre2
ENDIF


ENDFOR

SELECT curCoRders
SKIP
SELECT curCoRders1
SKIP
ENDDO

el problema es que cuando los campos son tipo smalldatetime, o otro tipo de campo que no sea char o varchar me genera un error me dice que el operador y el operando no son del mismo tipo no se si hay alguna forma de solucionarlo o hay otra forma de hacerlo les estaria agradecido si me ayudan
  #2 (permalink)  
Antiguo 11/01/2007, 00:47
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 3 meses
Puntos: 22
Re: Saber el tipo de campo en Fox 9

Hola NEST.

Tal vez la función TRANSFORM resuelva el problema, echale un vistazo en la referencia.

Seria algo del estilo:
Código:
vNombre1= "curCoRders.Campo" + ALLTRIM(TRANSFORM(ndcampo))
...
Un saludo.
  #3 (permalink)  
Antiguo 11/01/2007, 08:32
 
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Saber el tipo de campo en Fox 9

gracias por tu ayuda.
Fijate que el error me lo genera en la parte de codigo:

WAIT WINDOW "Son diferentes: " + &vNombre1 + &vNombre2

y es porque a las variables &vNombre1 y &vNombre2 cambian el tipo del campo a la hora de ir recorriendo el cursor con el for entonces como la parte de codigo "Son diferentes: " la toma como caracter y las variables &vNombre1 y &vNombre2 pueden ser de tipo entero, date, bin, etc. Me genera el error que les mencione arriba.

No se si habra alguna forma de corregir eso o otra forma de concatenerlos
  #4 (permalink)  
Antiguo 11/01/2007, 10:20
 
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Saber el tipo de campo en Fox 9

Muchas gracias aplique la funcion TRANSFORM a las variables y me funciono por si a alguien le interesa aqui dejo el codigo:

SELECT curCoRders
GO TOP
SELECT curCoRders1
GO TOP

ndif = 0
nigual = 0

DO WHILE !EOF()

ndcampo=0

FOR i=1 TO 37 STEP 1
ndcampo=ndcampo+1
vNombre1="curCoRders.Campo"+ALLTRIM(STR(ndcampo))
vNombre2="curCoRders1.Campo"+ALLTRIM(STR(ndcampo))


valor1 = TRANSFORM(&vNombre1)
valor2 = TRANSFORM(&vNombre2)

IF NVL(valor1 , "") != NVL(valor2 , "")
ndif = ndif + 1
WAIT WINDOW "Se modifico de: " + ALLTRIM(valor1) + " a: " + ALLTRIM(valor2) NOWAIT
THISFORM.LISt1.AddItem("Se modifico de: " + ALLTRIM(valor1) + " a: " + ALLTRIM(valor2) + " Pedido No. " + ALLTRIM(curCoRders.id_pedido))
ELSE
nigual = nigual + 1
WAIT WINDOW "Son iguales: " + ALLTRIM(valor1) + " y " + ALLTRIM(valor2) NOWAIT
ENDIF
ENDFOR

SELECT curCoRders
SKIP
SELECT curCoRders1
SKIP
ENDDO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:18.