FoxPro/Visual FoxPro - Ayuda... por fa....

   
Vista:

Ayuda... por fa....

Publicado por Ramon (81 intervenciones) el 04/10/2010 21:56:27
hola amigos... estoy batallando bastante con MYSQL... lo que pasa es que no graba los datos en las tablas... quisiera que me ayudaran a construir la cadena...

ahorita le estoy haciendo asi... porque no funciona con al cadena que hice...

lGraba="INSERT INTO VEHICULOS(UR, NCONSEC, NECONOMICO, PLACAS, MARCA, TIPO, MODELO, VCOLOR, RFA, CILINDROS) values(?varur, ?mcons, ?mnecono, ?mplacas, ?mMarca, ?mTipo, ?mModelo, ?mColor, ?mrfa, ?mcilin)"

AHORITA LE ESTOY HACIENDO ASI... PERO NO ES CORRECTO.. VERDAD...??
**************** No guarda el Update...*****
act2="Update VEHICULOS SET SERIE=?mserie, NMOTOR=?mnmotor, INVENTARIO=?minventa, REGIMEN=?mRegimen, SITUACION=?mSitActual WHERE NCONSEC=?mcons"
SQLEXEC(Con,lGraba)
SQLEXEC(Con,act2)

ESTA ES LA ESTRUCTURA DE LA TABLA EN MYSQL LA SAQUE ASI...
SqlExec(con,"select * from vehiculos','vista')
select vista
display structure to file tmp.txt

despues en vfp le doy run/7 tmp.txt... y lo carga en el block de notas y de ahi lo copio...
para presentarselos aqui...
******************************************************
UR Character 5 Yes
NCONSEC Character 20 Yes
NECONOMICO Character 25 Yes
PLACAS Character 20 Yes
MARCA Character 25 Yes
TIPO Character 25 Yes
MODELO Integer 4 Yes
VCOLOR Character 25 Yes
RFA Character 25 Yes
CILINDROS Integer 4 Yes
SERIE Character 25 Yes
NMOTOR Character 25 Yes
INVENTARIO Character 25 Yes
REGIMEN Character 25 Yes
SITACTUAL Character 25 Yes

aqui estan mis variables que deseo incorporar en la cadena.. pero... NO ME SALE...
**************************************
?varur, ?mcons, ?mnecono, ?mplacas, ?mMarca, ?mTipo, ?mModelo, ?mColor, ?mrfa, ?mcilin, ?mserie, ?mnmotor, ?minventa, ?mRegimen, ?mSitActual

yo construyo la cadena asi...
lGraba="insert into vehiculos (UR=?varur, NCONSEC=?mcons... hasta llegar a,"+;
" NECONOMICO=?economico.... y continuar con la cadena... hasta "

despues:
Try
SqlExec(con,lGraba)
Catch
Message....
EndTry...

Gracias por su apoyo
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:Ayuda... por fa....

Publicado por es_binarioe (757 intervenciones) el 05/10/2010 00:34:40
Bueno el error no parece estar en la cadena por lo que podria estar en las variables yo te propongo que ejecutes tu form con en el debugger de foxpro paso a paso que veas que tipo toman las variables a la hora de ingresarles datos en ellas.

tambien puedes usar el try catch de forma mas formal para que te informe que error te arroja mysql

*//definir una variable como exepcion
LOCAL lo AS Exception

Try
SqlExec(con,lGraba)
Catch

? "-- CATCH --"

lo.UserValue = "Aquí hay un error"
? ' Comment: ', lo.COMMENT
? ' Details: ', lo.Details
? ' ErrorNo: ', lo.ErrorNo
? ' LineContents: ', lo.LineContents
? ' LineNo: ', lo.LINENO
? ' Message: ', lo.MESSAGE
? ' Procedure: ', lo.PROCEDURE
? ' UserValue: ', lo.UserValue
? ' StackLevel: ', lo.StackLevel

EndTry

luego simplemente minimisas tus form par ver lo que te ponen en la pantalla de foxpro en la _screen y tendras claro el problema.
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:Ayuda... por fa....

Publicado por xx (378 intervenciones) el 05/10/2010 03:26:34
Ponle esta sentencia luego de conectarte al servidor mysql:

SQLSETPROP( _xSQLcn, "DISPWARNINGS", .T. )

es una opcion de depuracion que funciona al menos en el VFP6.0 y mysql 5.x te muestra cuando falla una ejecucion el error devuelto por MYSQL para saber directamente donde esta el problema.

Me gustaria saber porque le agregan el caracter ? en las sentecias insert, es algo especifico del vfp9.0 o o cual es el motivo o el vfp9.0 te convierte el tipo de variable que sea a cadena?
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:Ayuda... por fa.... y el caracter ?

Publicado por xx (378 intervenciones) el 06/10/2010 04:57:18
Estuve hurgando un poquito sobre el tema y he llegado a la conclusión de que SQLEXEC() o SQLPREPARE() es el que se encarga de reemplazar en la sentencia por ejemplo:

nombre = "hugo"
sqlexec(Con, "Insert into nombre(?nombre,'vidal solis 1')")
enviarlo como al motor mysql:
"insert into tabla (nombre,direccion) values ('hugo','vidal solis1');"

y .... la verdad es mucho mas comodo o mas facil de usar, puesto que la manera en que yo lo hacia era bastante mas compleja pero al final da lo mismo.

Funciona tambien en VFP6.0

Gracias por el aporte!!, y si alguien mas tiene algun material en la que se pueda profundizar mas sobre este tema se agradecera el aporte!!
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