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
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


0