FoxPro/Visual FoxPro - Problema de SQLEXEC() NO PREPARADA.

 
Vista:
sin imagen de perfil
Val: 69
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Jesus (121 intervenciones) el 31/08/2015 20:32:00
Estimados amigos
Tengo el problema q cuando intente actualzar datos de un registro ya registrado
me sale este error de "SE NCESITA EL PARAMETRO DE LA INSTRUCCION SQL PARA LAS LLAMADAS SQLEXEC() NO PREPARADA.
Aqui les Envio el codigo en donde salta el este Error:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
= TABLEUPDATE(.T.)
Wcadena2="UPDATE Asistencia_Doc SET Asistencia_Doc.Hor_Sal ='"+Allt(Thisform.Hor_Sis.Value)+"',;
Asistencia_Doc.Hor_Per ='"+xPmn+"',Asistencia_Doc.Hor_Fal ='"+ALLTRIM(STR(Xhor5))+"' WHERE Asistencia_Doc.Dni_Doc ='"+Allt(Thisform.Dni_Doc.Value)+"'"
=SQLEXEC(CnxAst,Wcadena2)
 
 
 IF SQLEXEC(CnxAst,Wcadena2) > 0
   *** Actualizados con exito
   *** Messagebox("Datos actualizados con éxito")
ELSE
  IF AERROR(laError) > 0
     Messagebox("Error al actualizar el registro:"+laError[2])
  ELSE
     Messagebox("Error inesperado!!")
  ENDIF
ENDIF


De antemano mil Gracias por tu pronta ayuda


Jechu
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
sin imagen de perfil
Val: 59
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Juan R. (114 intervenciones) el 01/09/2015 00:58:25
Buenas Jechu

Doy por hecho que la variable CnxAst es el valor que se devuelve una vez usado el comando SQLConnect( ), entonces antes de llamar al comando SQLEXEC, usaste el comando SQLSETPROP ( )? Te fue bien sin dar error??? Puedes tener alguna variable mal puesta en la consulta????

Es que así a bote pronto, no veo nada realmente mal. A ver si alguien más sabio ve que pasa ahí.

Un saludo
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
sin imagen de perfil
Val: 69
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Jesus (121 intervenciones) el 01/09/2015 06:25:46
Asi es amigo CnxAst es el valor que devuelve SQLConnect( ) .
y como uso el comando SQLSETPROP ( )
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
sin imagen de perfil
Val: 59
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Juan R. (114 intervenciones) el 01/09/2015 22:55:03
Buenas de nuevo

SQLSETPROP( ) sirve, por ejemplo, para asignar el tamaño de paquetes para la conexión actual, yo por ejemplo, realizaría después del SQLCONNECT ( ), quizás si introduces la instrucción siguiente, te irá bien.

lnSQL = SQLSETPROP(CnxAst,’Transactions’,2)

if lnSQL != 1 then
MESSAGEBOX("ERROR ...")
endif

* La instrucción anterior lo que haces es decir que las transacciones las vas a hacer tú. Si te devuelve 1, es que funciona, y después quizás ya te deje funcionar con el SQLEXEC bien.

Ya me contarás si te ha ido bien.

Un saludo
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
sin imagen de perfil
Val: 69
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Jesus (121 intervenciones) el 02/09/2015 06:42:39
Estimado Juan
con tu aporte el codigo a quedado asi:

1
2
3
4
5
6
7
8
9
lnSQL = SQLSETPROP(CnxAst,'transactions',2)
= TABLEUPDATE(.T.)
Wcadena2="UPDATE Asistencia_Doc SET Asistencia_Doc.Hor_Sal ='"+Allt(Thisform.Hor_Sis.Value)+"',;
Asistencia_Doc.Hor_Per ='"+xPmn+"',Asistencia_Doc.Hor_Fal ='"+ALLTRIM(STR(Xhor5))+"' WHERE Asistencia_Doc.Dni_Doc ='"+Allt(Thisform.Dni_Doc.Value)+"'"
=SQLEXEC(CnxAst,Wcadena2)
 
If lnSQL != 1 Then
  MessageBox("ERROR ...")
EndIf


Pero igual me sigue saliendo el mismo error pero solo cuando intento actualizar ya no se que hacer.
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
sin imagen de perfil
Val: 59
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Juan R. (114 intervenciones) el 03/09/2015 10:34:50
Buenas de nuevo Jesus

Pues sólo se me ocurre una cosa, para probar a ver si el resultado funciona. Sería utilizar cursores, es decir, que pases tu tabla a un cursor y después la actualices en el cursor. De manera que la instrucción SQLEXEC quedaría de la siguiente forma:

SQLEXEC(CnxAst,Wcadena2,tuCursor)

Después para actualizar tendrías que usar la instrucción replace, por ejemplo:

replace tabla1.dato1 with tuCursor.dato1 in tabla1.

Si no funciona así, espero que alguien te pueda ayudar, porque ahora mismo no se me ocurre nada más. Si se me ocurre algo nuevo, ya te contaré.

Un saludo y suerte.
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
sin imagen de perfil
Val: 69
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Jesus (121 intervenciones) el 03/09/2015 15:59:43
Estimado Juan
Por fin quedo sin errores por ahora todo bien gracias al procedimiento anterior q me indicaste:

SQLSETPROP( ) sirve, por ejemplo, para asignar el tamaño de paquetes para la conexión actual, yo por ejemplo, realizaría después del SQLCONNECT ( ), quizás si introduces la instrucción siguiente, te irá bien.

lnSQL = SQLSETPROP(CnxAst,’Transactions’,2)

if lnSQL != 1 then
MESSAGEBOX("ERROR ...")
endif

Revisando me di cuenta q un campo estaba vacio al mando q actualizo con Update. la
pregunta es hya manera de q no me indique errores si es un campo no se llena nada

Gracias

Jesus
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
sin imagen de perfil
Val: 59
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Juan R. (114 intervenciones) el 04/09/2015 11:15:33
Buenas Jesús

Bien, me alegra que ahora ya funcione :)

Puedes controlar los errores con try ... catch, pero el error te va a dar igual. En el único caso que no te daría error (en mi modesta opinión) es que en tu B.D. originales el campo que va vacío (intuyo que quieres decir que va a null) acepte valores nulos, si no acepta valores nulos, al actualizar si no lleva algún valor siempre te fallará el SQLEXEC( ).

Un saludo
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
Val: 69
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Problema de SQLEXEC() NO PREPARADA.

Publicado por Jesus (121 intervenciones) el 04/09/2015 16:13:40
Mil Gracias ahora lo q me indicas
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