FoxPro/Visual FoxPro - Insertar fechas vacias en SQL desde FOX

 
Vista:

Insertar fechas vacias en SQL desde FOX

Publicado por Jose Funes (5 intervenciones) el 31/10/2010 05:21:31
Estimados, buenas.

necesito resolver el siguiente inconveniente presentado, estoy desarrollando una aplicacion en FOX PRO 9 SP1 conectado a BD SQL Server 200, necesito insertar o grabar fecha vacia o nulas en el campo de la tabla del SQL.

Desde fox la declaro en el Init Public, y la guardo en un cursor

w_fechadesde={//}
w_fechahasta={//}

En BD estos campos lo tengo definido de tipo de datos Datetime, ambos campos estan configurados para que permitan campos nulos.

El problema es que desde fox cuando invoco al insert pasando fecha vacia me da fallo, quise tratar de solucionar este problema pero no lo he logrado. Hago dos inserts uno cuando paso datos vacios en el campo fecha y otro cuando paso datos, este ultimo no he tenido inconvenientes.
me pueden ayudar, muchas gracias

IF (EMPTY(cur_detalle_caja.FECHADESDE) OR EMPTY(cur_detalle_caja.FECHAHASTA)) THEN

tsql=[insert into contenidoxcaja(nro_caja,id_area,id_documento,detalle,nrodesde,nrohasta,letradesde,letrahasta,fechadesde,fechahasta,fechavenc)];
+ [ values (]+ALLTRIM(STR(xnro_caja))+[,]+ALLTRIM(STR(cur_detalle_caja.ID_AREA))+[,]+ALLTRIM(STR(cur_detalle_caja.ID_DOCUMENTO))+[,'];
+ALLTRIM(cur_detalle_caja.CONTENIDO)+[',]+ALLTRIM(STR(cur_detalle_caja.NUMERODESDE))+[,]+ALLTRIM(STR(cur_detalle_caja.NUMEROHASTA))+[,'];
+ALLTRIM(cur_detalle_caja.LETRADESDE)+[',']+ALLTRIM(cur_detalle_caja.LETRAHASTA)+[',]+w_fechadesde+[,'];
+w_fechahasta+[,']+DTOC(cur_detalle_caja.FECHAVENC)+[')]
tres=sqlx(fh,tsql,'')
WAIT WINDOW tsql
ELSE
tsql=[insert into contenidoxcaja(nro_caja,id_area,id_documento,detalle,nrodesde,nrohasta,letradesde,letrahasta,fechadesde,fechahasta,fechavenc)];
+ [ values (]+ALLTRIM(STR(xnro_caja))+[,]+ALLTRIM(STR(cur_detalle_caja.ID_AREA))+[,]+ALLTRIM(STR(cur_detalle_caja.ID_DOCUMENTO))+[,'];
+ALLTRIM(cur_detalle_caja.CONTENIDO)+[',]+ALLTRIM(STR(cur_detalle_caja.NUMERODESDE))+[,]+ALLTRIM(STR(cur_detalle_caja.NUMEROHASTA))+[,'];
+ALLTRIM(cur_detalle_caja.LETRADESDE)+[',']+ALLTRIM(cur_detalle_caja.LETRAHASTA)+[',']+DTOC(cur_detalle_caja.FECHADESDE)+[','];
+DTOC(cur_detalle_caja.FECHAHASTA)+[',']+DTOC(cur_detalle_caja.FECHAVENC)+[')]
tres=sqlx(fh,tsql,'')
WAIT WINDOW tsql
ENDIF
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

RE:Insertar fechas vacias en SQL desde FOX

Publicado por Jose Funes (5 intervenciones) el 03/11/2010 03:07:26
Estimado, ya solucione el problema:

Solucion es la siguiente manera:

+[',null,null,']+DTOC(cur_detalle_caja.FECHAVENC)+[')]

gracias de todas formas.
saludos.-
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

RE:Insertar fechas vacias en SQL desde FOX

Publicado por Ramses (1 intervención) el 29/12/2010 16:06:19
Saludos, tambien vengo de VFP y al trabajar con sql me di cuenta que el concepto de fecha vacia no existe, solo existe el concepto NULO o NULL,
asi que deberias insertar es un valor nulo en ves de fecha vacia. Y el otro problema que nos ocurre a los que trabajamos con vfp es que los campor fecha nulos son retornado con la fecha por defecto 01-01-1900. Asi que tenemos que trabajar en base a esa fecha para cambiarla a vacia.
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