FoxPro/Visual FoxPro - Error al Grabar de Vfp9 a MySql

   
Vista:

Error al Grabar de Vfp9 a MySql

Publicado por Jesus (85 intervenciones) el 31/07/2014 20:39:31
Estimado amigos Buenas
Mi problema es el siquiente cuando intento grabar del Vfp9 al MySql me sale este Mensaje de Error" El comando contiene una Frase o Palabra clave no reconocida", pero cuando quito un campo de este procedimiento si graba, pero yo necesito grabar mas campos aparte de estos (en total 25 campos).
Les envio el codigo q uso para grabar para ver q me sugieren.

= TABLEUPDATE(.T.)
Wcadena2b="Insert Into Dat_Per(Gen_Per, Fre_Per, Ndc_Per, Cod_Per, Nom_Per, Pat_Per,;
Mat_Per, Fna_Per, Lug_Per, Dpt_Per, Prv_Per, Nac_Per, Npa_Per, Nma_Per, Eci_Per, Sit_Per,;
Sex_Per, Reg_Per, Tse_Per, Nse_Per, Idi_Per, Dir_Per, Ref_Per, Tel_Per,;
Cel_Per) Values('"+Dat_Per.Gen_Per+"','"+Dat_Per.Fre_Per+"','"+Dat_Per.Ndc_Per+"',;
'"+Dat_Per.Cod_Per+"','"+Dat_Per.Nom_Per+"','"+Dat_Per.Pat_Per+"','"+Dat_Per.Mat_Per+"',;
'"+Dat_Per.Fna_Per+"','"+Dat_Per.Lug_Per+"','"+Dat_Per.Dpt_Per+"','"+Dat_Per.Prv_Per+"',;
'"+Dat_Per.Nac_Per+"','"+Dat_Per.Npa_Per+"','"+Dat_Per.Nma_Per+"','"+Dat_Per.Eci_Per+"',;
'"+Dat_Per.Sit_Per+"','"+Dat_Per.Sex_Per+"','"+Dat_Per.Reg_Per+"','"+Dat_Per.Tse_Per+"',;
'"+Dat_Per.Nse_Per+"','"+Dat_Idi.Nhj_Per+"','"+Dat_Per.Ref_Per+"','"+Dat_Per.Tel_Per+"',;
'"+Dat_Per.Cel_Per+"')"


IF Sqlexec(CnxSca,Wcadena2b)>0
Else
a=Aerror(Mat)
Messagebox(Mat(2),55,'Error al Grabar')
ENDIF

Espero su Pronta respuesta Mil Gracias por su tiempo.
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

Error al Grabar de Vfp9 a MySql

Publicado por Saul (676 intervenciones) el 01/08/2014 04:06:56
Te recomiendo que pruebes este codigo, asi lo trabajo yo y cero problemas

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
*- Me imagino que usas una tabla temporal para guardar los campos que vas actulizar en tu MYSQL
SELECT Dat_Per
=TABLEUPDATE(.T.)
 
*.- A mi parecer no es buena practica pero bueno, eso ya queda en ti.., PERO ademas te falta una instrucción.
 
SCATTER MEMVAR   &&Vuelve todas las variables,  a varibles de memoria, y el INSERT las reconocera mejor
 
		*.- Utiliza el TEXT Y ENDTEXT para guardar tu scripts se ve mejor y no andas con esos problematicos ' ""
		*.- Ademas  de convertir las variables en variables de memoria m.Gen_per le tienes que anteponer ? para que MYSQL las reconosca como
		*.- Variables de mysql y no de fvp, (son como parametros)
 
		Wcadena2b=""	&&Seteamos la variable Texto
	    TEXT TO Wcadena2b NOSHOW
			INSERT INTO Dat_Per (Gen_Per,
								 Fre_Per,
								 Ndc_Per,
								 Cod_Per,
								 Nom_Per,
								 Pat_Per,
								 Mat_Per,
								 Fna_Per,
								 Lug_Per,
								 Dpt_Per,
								 Prv_Per,
								 Nac_Per,
								 Npa_Per,
								 Nma_Per,
								 Eci_Per,
								 Sit_Per,
					 			 Sex_Per,
					 			 Reg_Per,
					 			 Tse_Per,
					 			 Nse_Per,
					 			 Ref_Per,
					 			 Tel_Per,
					 			 Cel_Per)
					 	VALUES(?m.Gen_Per
					 		   ?m.Fre_Per
					 		   ?m.Ndc_Per
							   ?m.Cod_Per
							   ?m.Nom_Per
							   ?m.Pat_Per
							   ?m.Mat_Per,
							   ?m.Fna_Per
							   ?m.Lug_Per
							   ?m.Dpt_Per
							   ?m.Prv_Per
							   ?m.Nac_Per
							   ?m.Npa_Per
							   ?m.Nma_Per
							   ?m.Eci_Per
							   ?m.Sit_Per
							   ?m.Sex_Per
							   ?m.Reg_Per
							   ?m.Tse_Per,
							   ?m.Nse_Per
							   ?m.Ref_Per
							   ?m.Tel_Per
							   ?m.Cel_Per)
		ENDTEXT
 
		*Estos CAMPOS estan dentro de los campos de tu tabla y no los tienes en tu VALUE()
		** Idi_Per,
		** Dir_Per,
 
		* Este CAMPO lo tienes en VALUES pero no esta dentro de tus campos tabla, basicamente era el ERROR
		** Dat_Idi.Nhj_Per
 
	    cmd = SQLEXEC(CnxSca,Wcadena2b)
 
		IF cmd > 0 	 && Intenta confirmar los cambios
		    WAIT WINDOW AT SROWS() / 2, (SCOLS() / 2) - 5  'Aculizando Base de Datos!!!' NOWAIT
		ELSE
			IF AERROR(laError)> 0
				Messagebox("No guardo ningún dato se ha producido un Error: "+laError[2])
			ENDIF
		ENDIF
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

Error al Grabar de Vfp9 a MySql

Publicado por Jesus (85 intervenciones) el 01/08/2014 05:15:15
Estimado Saul voy a probralo cualquier duda te aviso mil Gracias
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

Error al Grabar de Vfp9 a MySql

Publicado por Jesus (85 intervenciones) el 04/08/2014 23:59:26
Estimado amigo Saul he probado tu codigo al cual le aumente mas campos pero me sale este mensaje de Error:"Errr de conectividad You Have error in your Sql syntaxis check the manual that correponds to your Mysql server version for the right syntax to user near '?
?


Te copio el codigo q he puesto:
SELECT Dat_Per
=TABLEUPDATE(.T.)
SCATTER MEMVAR
Wcadena2b=""
TEXT TO Wcadena2b NOSHOW
Insert Into Dat_Per (Gen_Per,
Fin_Per,
Tip_Per,
Hrs_Per,
Ndc_Per,
Cod_Per,
Nom_Per,
Pat_Per,
Mat_Per,
Fna_Per,
Lug_Per,
Dpt_Per,
Prv_Per,
Nac_Per,
Npa_Per,
Nma_Per,
Dhj_Per,
Nhj_Per,
Css_Per,
Niv_Per,
Uañ_Per,
Pla_Per,
Tañ_Per,
Lpl_Per,
Sit_Per,
Sex_Per,
Reg_Per,
Tse_Per,
Nse_Per,
Idi_Per,
Dir_Per,
Ref_Per,
Tel_Per,
Cel_Per,
Ema_Per,
Obs_Per)
VALUES(?m.Gen_Per
?m.Fin_Per
?m.Tip_Per
?m.Hrs_Per
?m.Ndc_Per
?m.Cod_Per
?m.Nom_Per
?m.Pat_Per
?m.Mat_Per,
?m.Fna_Per
?m.Lug_Per
?m.Dpt_Per
?m.Prv_Per
?m.Nac_Per
?m.Npa_Per
?m.Nma_Per
?m.Dhj_Per
?m.Nhj_Per
?m.Css_Per
?m.Niv_Per
?m.Uañ_Per
?m.Pla_Per
?m.Tañ_Per
?m.Lpl_Per
?m.Sit_Per
?m.Sex_Per
?m.Reg_Per
?m.Tse_Per,
?m.Nse_Per
?m.Idi_Per
?m.Dir_Per
?m.Ref_Per
?m.Tel_Per
?m.Cel_Per
?m.Ema_Per
?m.Obs_Per)
ENDTEXT

cmd = SQLEXEC(CnxSge,Wcadena2b)
IF cmd > 0 && Intenta confirmar los cambios
WAIT WINDOW AT SROWS() / 2, (SCOLS() / 2) - 5 'Aculizando Base de Datos!!!' NOWAIT
ELSE
IF AERROR(laError)> 0
Messagebox("No guardo ningún dato se ha producido un Error: "+laError[2])
ENDIF
ENDIF

De ya mil gracias por tu tiempo.
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

Error al Grabar de Vfp9 a MySql

Publicado por Saul (676 intervenciones) el 05/08/2014 00:50:17
Hola Jesus..

Veo 2 errores,

1.- NO se si ya te conectaste con MYSQL y Visual Fox
2.- Despues de cada campo va coma, "," con excepcion del ultimo.

prueba y me cuentas

Sha
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

Error al Grabar de Vfp9 a MySql

Publicado por Jesus (85 intervenciones) el 05/08/2014 21:12:08
Estimado Saul
Ya aumente las comas (;) q me indicaste y lo raro q ejecute el programa grabo un registro y todo ok
pero luego entre al MySql y borre desde consola (MySql WorkBech) este registro de prueba q ingrese con este comando : delete FROM sigae2014.dat_per where dat_per.Ndc_Per='09982422' Limit 1;
Pero ahora q deseo ingresa o actualizar mas datos el programa corre todo normal y sale el aviso q grabo o actualizo, pero cuando entro alMySql WorkBech para ver lo q he grabado no aparece nada de lo q ingresado ni tampo actualiza li ya esta grabado puede haber pasado.
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

Error al Grabar de Vfp9 a MySql

Publicado por Jesus (85 intervenciones) el 06/08/2014 05:56:21
Estimado Saul
Estube probando y con un procedimiento q usaba antes en donde solo graba 9 campos y si Graba y Actualiza en el MySql este el procedimiento:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Select Tmp_Per
Go Top
Do While !Eof()
  TABLEUPDATE(.T.)
  Wcadena1 = "INSERT INTO Car_Per(Ndc_Car, Gen_Car, Crg_Car, Car_Car, Pla_Car, Nro_Car, Lug_Car,;
  Prv_Car, Eau_Car, Eno_Car, Fen_Car, Sau_Car, Sno_Car, Fsa_Car, Mot_car, Tsp_Car, Tst_Car);
  Values('"+ALLT(Tmp_Per.Campo1)+"','"+ALLT(Tmp_Per.Campo2)+"',;
  '"+ALLT(Tmp_Per.Campo3)+"','"+ALLT(Tmp_Per.Campo4)+"','"+ALLT(Tmp_Per.Campo5)+"',;
  '"+ALLT(Tmp_Per.Campo6)+"','"+ALLT(Tmp_Per.Campo7)+"','"+ALLT(Tmp_Per.Campo8)+"','"+ALLT(Tmp_Per.Campo9)+"',;
  '"+ALLT(Tmp_Per.Campo10)+"','"+ALLT(Tmp_Per.Campo11)+"','"+ALLT(Tmp_Per.Campo12)+"','"+ALLT(Tmp_Per.Campo13)+"',;
  '"+ALLT(Tmp_Per.Campo14)+"','"+ALLT(Tmp_Per.Campo15)+"','"+ALLT(Tmp_Per.Campo16)+"','"+ALLT(Tmp_Per.Campo17)+"')"
 
  If Sqlexec(CnxSge,Wcadena1)>0
  Else
    a=Aerror(Mat)
    Messagebox(Mat(2),55,'Error al Grabar')
    _cliptext=Wcadena1
  EndIf
 
  Sele Tmp_Per
  Skip
EndDo.

Pero con el codigo q me has enviado si grabo bien los 25 campos la primera vez luego aumente mas campos (total 39) pero desde alli ya no graba ni actualiza te envio el codigo q me has enviado pero modificado por mi persona para q puedas vez q pasa.

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
SELECT Dat_Per
=TABLEUPDATE(.T.)
SCATTER MEMVAR
Wcadena2b=""
TEXT TO Wcadena2b NOSHOW
 Insert Into Dat_Per (Gen_Per,
                      Fin_Per,
                      Tip_Per,
                      Hrs_Per,
                      Ndc_Per,
                      Cod_Per,
                      Nom_Per,
                      Pat_Per,
                      Mat_Per,
                      Dat_Per,
                      Fna_Per,
                      Lug_Per,
                      Dpt_Per,
                      Prv_Per,
                      Nac_Per,
                      Npa_Per,
                      Nma_Per,
                      Eci_Per,
                      Dhj_Per,
                      Nhj_Per,
                      Css_Per,
                      Niv_Per,
                      Uañ_Per,
                      Pla_Per,
                      Tañ_Per,
                      Lpl_Per,
                      Sit_Per,
                      Sex_Per,
                      Reg_Per,
                      Tse_Per,
                      Nse_Per,
                      Idi_Per,
                      Dir_Per,
                      Ref_Per,
                      Tel_Per,
                      Cel_Per,
                      Ema_Per,
                      Obs_Per,
                      His_Per)
                   VALUES(?m.Gen_Per,
                          ?m.Fin_Per,
                          ?m.Tip_Per,
                          ?m.Hrs_Per,
                          ?m.Ndc_Per,
                          ?m.Cod_Per,
                          ?m.Nom_Per,
                          ?m.Pat_Per,
                          ?m.Mat_Per,
                          ?m.Dat_Per,
                          ?m.Fna_Per,
                          ?m.Lug_Per,
                          ?m.Dpt_Per,
                          ?m.Prv_Per,
                          ?m.Nac_Per,
                          ?m.Npa_Per,
                          ?m.Nma_Per,
                          ?m.Eci_Per,
                          ?m.Dhj_Per,
                          ?m.Nhj_Per,
                          ?m.Css_Per,
                          ?m.Niv_Per,
                          ?m.Uañ_Per,
                          ?m.Pla_Per,
                          ?m.Tañ_Per,
                          ?m.Lpl_Per,
                          ?m.Sit_Per,
                          ?m.Sex_Per,
                          ?m.Reg_Per,
                          ?m.Tse_Per,
                          ?m.Nse_Per,
                          ?m.Idi_Per,
                          ?m.Dir_Per,
                          ?m.Ref_Per,
                          ?m.Tel_Per,
                          ?m.Cel_Per,
                          ?m.Ema_Per,
                          ?m.Obs_Per,
                          ?m.His_Per)
ENDTEXT
 
cmd = SQLEXEC(CnxSge,Wcadena2b)
IF cmd > 0       && Intenta confirmar los cambios
   WAIT WINDOW AT SROWS() / 2, (SCOLS() / 2) - 5 'Registrando los Datos en el Servidor...!!!' TIMEOUT 4 
*   WAIT WINDOW AT SROWS() / 2, (SCOLS() / 2) - 5 'Registrando los Datos en el Servidor...!!!' NOWAIT 
ELSE
   IF AERROR(laError)> 0
      Messagebox("No guardo ningún dato se ha producido un Error: "+laError[2])
   ENDIF
ENDIF

Espero tu pronta ayuda Gracias
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