FoxPro/Visual FoxPro - Añadir una fecha en blanco en MYSQL

 
Vista:
sin imagen de perfil

Añadir una fecha en blanco en MYSQL

Publicado por Victor perez (137 intervenciones) el 18/02/2013 16:45:53
EStimados amigos,

Tengo el siguiente problema:

En mi facturacion, tengo dos tipos de facturas: credito y contado

Si la factura es contado, hay que insertar una informacion que es como sigue:

_cancel="SI" qUE INDICA QUE LA FACTURA FUE CANCELADA
_FPAGO=DATE() que indica la fecha en que se cancelo ( el dia que se facturo pues
es contado)

Ahora si la factura es credito,

_cancel=" " Factura no cancelada
_fpago= no debe registrarse nada.

El problema es que al insertar los valores, debo darle un valor al campo F_pago en la tabla de mysql y no se como expresarlo desde VFP.


Se me ocurrio hacer una condicion

Si es contado, un TEXT /ENDTEXT donde inserto la informacion de _cancel y _fpago

Si es credito, el mismo TEXT/ENDTEX donde no inserto esta informacion...sino que me olvido de esas columnas.

Funciona pero no se si es la manera correcta...

Saludos y espero comentarios;

Aqui les dejo el codigo entero:

IF THISFORM.PGFPEDS.PAGE1.CMBTIPOFAC.Value="CONTADO"
TEXT TO XSQL TEXTMERGE NOSHOW
INSERT INTO DETALLE (CD_DCMTO,CD_FECHA,CD_CODCLI,CD_NAME,CD_ITEM,CD_CANT,CD_PUNIT,CD_IMPORTE,CD_HREG,CD_FREG,USUARIO,MEDCODE,CD_METPAGO,CD_TIPOFAC,CD_FPAGO,CD_CANCEL,CD_PORC)
VALUES(?_DOC,?M.CC_FECHA,?M.CC_CODCLI,?M.CC_NOMCLI,?_ITEMS.IT_CODIGO,?_ITEMS.IT_CANT,?_ITEMS.IT_PUNI,?_ITEMS.IT_TOTAL,?M.CC_HREG,?M.CC_FREG,?WUSER,?_MEDCODE,?_METODO,
?M.CC_TIPOFAC,?_CD_FPAGO,?_CD_CANCEL,?_PORC)
ENDTEXT
ELSE
TEXT TO XSQL TEXTMERGE NOSHOW
INSERT INTO DETALLE (CD_DCMTO,CD_FECHA,CD_CODCLI,CD_NAME,CD_ITEM,CD_CANT,CD_PUNIT,CD_IMPORTE,CD_HREG,CD_FREG,USUARIO,MEDCODE,CD_METPAGO,CD_TIPOFAC,CD_PORC)
VALUES(?_DOC,?M.CC_FECHA,?M.CC_CODCLI,?M.CC_NOMCLI,?_ITEMS.IT_CODIGO,?_ITEMS.IT_CANT,?_ITEMS.IT_PUNI,?_ITEMS.IT_TOTAL,?M.CC_HREG,?M.CC_FREG,?WUSER,?_MEDCODE,?_METODO,
?M.CC_TIPOFAC,?_PORC)
ENDTEXT
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

Añadir una fecha en blanco en MYSQL

Publicado por Saul (728 intervenciones) el 18/02/2013 23:08:15
La fecha la tienes que poner como '1900-01-01' y cuando llames tus registros de la tablas
y son exactamente de esta fecha, ponlo en blanco tu caja de texto (campo fecha)

Saluludos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
*-Borra los registros que ya fueron grabados, para volverlos a generar
	*- con este nuevo Insert
	lcSQLcommand = ""
	*- Arma Script
	TEXT TO lcSQLcommand NOSHOW
		DELETE FROM ccCxPDetalle
		WHERE CD_DCMTO = ?_DOC;
	ENDTEXT
 
	*-Conecta MySql
	=SQLEXEC(CnxSde,lcSQLcommand)
 
*- para Grabar Detalle
SELECT cuDetFacturas    &&Esta es tu tabla temporal de tu Grid
GOTO TOP
 
SCAN ALL
	*- Para ver si es contado
	IF EMPTY(cuDetFacturas._cd_FPago) AND TuRegistro.Escontado
		_CD_FPAGO = '1900-01-01'
	ENDIF
	TEXT TO XSQL TEXTMERGE NOSHOW
		INSERT INTO DETALLE (CD_DCMTO,
						CD_FECHA,
						CD_CODCLI,
						CD_NAME,
						CD_ITEM,
						CD_CANT,
						CD_PUNIT,
						CD_IMPORTE,
						CD_HREG,
						CD_FREG,
						USUARIO,
						MEDCODE,
						CD_METPAGO,
						CD_TIPOFAC,
						CD_FPAGO,
						CD_CANCEL,
						CD_PORC)
				VALUES(?_DOC,
					   ?M.CC_FECHA,
					   ?M.CC_CODCLI,
					   ?M.CC_NOMCLI,
					   ?_ITEMS.IT_CODIGO,
					   ?_ITEMS.IT_CANT,
					   ?_ITEMS.IT_PUNI,
					   ?_ITEMS.IT_TOTAL,
					   ?M.CC_HREG,
					   ?M.CC_FREG,
					   ?WUSER,
					   ?_MEDCODE,
					   ?_METODO,
					   ?M.CC_TIPOFAC,
					   ?_CD_FPAGO,
					   ?_CD_CANCEL,
					   ?_PORC)
	ENDTEXT
 
		 **_Graba los datos
		cmd = SQLEXEC(CnxSde,lcSQLcommand)
ENDSCAN
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
sin imagen de perfil

Añadir una fecha en blanco en MYSQL

Publicado por victor perez (137 intervenciones) el 18/02/2013 23:36:30
Gracias Saul,

Yo uso este campo FPAGO para poder actualizarlo cuando la factura sea pagada en su totalidad...por eso, en VFP con su base de datos nativa, yo la dejaba en blanco y sencillamente este campo no tenia informacion hasta que la factura no fuera cancelada en su totalidad....por eso me es mas practico que quede en blanco y luego se llene el dia que se cancela la misma.

Otra inquietud que tengo es saber cuando transfiero la informacion a Mysql desde VFP usando "?" y cuando uso "&" delante de la variable a transferir?

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

Añadir una fecha en blanco en MYSQL

Publicado por Saul (728 intervenciones) el 20/02/2013 03:06:55
Yo uso este campo FPAGO para poder actualizarlo cuando la factura sea pagada en su totalidad...por eso, en VFP con su base de datos nativa, yo la dejaba en blanco y sencillamente este campo no tenia informacion hasta que la factura no fuera cancelada en su totalidad....por eso me es mas practico que quede en blanco y luego se llene el dia que se cancela la misma.

Ya te puse en el ejemplo que tienes que poner la fecha con valor "1900-01-01" MYSQL que yo sepa no tolera campos de fecha en blanco.


Otra inquietud que tengo es saber cuando transfiero la informacion a Mysql desde VFP usando "?" y cuando uso "&" delante de la variable a transferir?

Usa siempre ? el & es en otros casos como para concatenar informacion en el mismo visual fox.

Yo siempre uso "?m.varible"

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
Imágen de perfil de Edgar Zambrano
Val: 2
Ha aumentado su posición en 36 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Añadir una fecha en blanco en MYSQL

Publicado por Edgar Zambrano (72 intervenciones) el 20/02/2013 21:04:41
MySql no permite guardar valores nulos o vacíos de campos date o datetime, lo que podrías hacer es enviarle a guardar una fecha arbitraria por ejemplo "1900-01-01" ya después tu validas que si encuentras esta fecha es porque no ha sido cancelada.
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