Vfp mysql insert largo

Hola amigo tengo una tabla en mysql con 40 campos... Del cual me conecto desde vfp 7.0 a mysql... Esta es mi inserción
xsql="insert into programaciones(idprogramacion,fechaprogramacion,idtipocarga,contenedor,idservicio,idarea,idcontenido,bultos,idembalajemercancia,idagente) values(?MAXID+1,?mfecha,?mcarga,?mserie,?mmaniobra,?marea,?mcontenido,?mbultos,?membalaje,?magente)"
inserta=SQLEXEC(lnHandle,xsql)

1.. Todo esta consulta la tengo en una sola linea... Cuando agrego más campos como parámetros me marca un error EL COMANDO CONTIENE UNA FRASE O PALABRA CLAVE NO RECONOCIDA en esta consulta solo tengo 10 campos de mi tabla, ya que mi tabla tiene 20, a que se devera ese error,, cuando quiero agregar los demás campos de mi tabla como parámetros me marca este error...
2.. Como puedo dividir esa consulta en varias lineas... Y que no quede en una sola...

1 Respuesta

Respuesta
1
Este error de fox es cuando superas la cantidad máxima de letras por linea, para dividirlo debes usar el ; (punto y coma), por ejemplo este ejemplo va en dos lineas pero el compilador lo ejecuta como una sola
messagebox("Hola mundo";
, 55,"Mensaje")
Fíjate que el ; le indica al compilador de fox el fin de la linea que la siguiente forma parte de la primera, puedes usar más de dos lineas por supuesto.
Hola gracias por tu ayuda,, pero aun tengo el problema de que si quiero agregar como parámetros más campos en la sentencia INSERT para agregar como idx, idy, idz y como parámetro en VALUES(?idx, idy, idz) me sige marcando el mismo error... en la consulta anterior solo pongo 10 campos de los 20 q tengo en mi tablla, pero si le pongo más de 10 como parámetros me marca este error... no se si me di entender bien...
Entiendo tu problema, pues el ; es tu solución, de todas formas yo utilizaría el siguiente formato
xSql = "insert into programaciones set "
xSql = xSql + " idprogramacion = "+str(maxID+1)+" , "
xSql = xSql + " fechaprogramacion = '"+dtoc(mFecha)+"', "
...
xSql = xSql + " idagente = "+str(mAgente)
Yo utilizo SET en vez de values por que no me obliga a recordar el orden de los campos, puedo poner en cualquier orden y ya voy igualando a mis variables, ¿el uso de? O las concatenaciones como +str() o dtoc(para las fechas) es opcional, ¿yo me acostumbro así pero la forma que tu haces esta bien con?, luego para paliar el problema de la extensión lo que hago es cortar los datos y los voy sumando (concatenando) en la variable xSql.
Esta es otra solución pero la otra que te dí debe funcionar sin problemas.
Gracias amigo si de fue ayuda... pero ahora cual seria la sintaxis = también cuando tengo consultas largar de hasta 5 tablas usando inner join
xsql3="select contenedor,agentes.descripcion as Agente,maniobras.descripcion as Maniobra from programaciones inner join agentes on programaciones.idagente=agentes.idagente inner join maniobras on programaciones.idservicio=maniobras.idmaniobra"
buscarpro=SQLEXEC(lnHandle,xsql3,"curbusq")
= tambien tengo esto en una solo linea y me pasa el mismo problema como con el insert
me imagino tambien q pasaria lo mismo con el UPDATE,DELETE
Como seria la sintaxis, tendrás algún ejemplo pequeño en dividir varias lineas con cada comando de UPDATE, SELECT, DELETE

Gracias nuevamente amigo
Claro, pasa lo mismo
xSql = "select campo1,campo2,campo3 "
xSql = xSql + " from tabla1,tabla2 "
xSql= xSql + " where campo=1 and campo3=campo4 "
Y así sucesivamente, la idea es concatenar los valores de xSql, o sea de la variable

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas