Sentencia SQL muy larga

384 views
Skip to first unread message

Julio Cesar Vente Ruiz

unread,
Sep 11, 2010, 5:17:38 PM9/11/10
to Comunidad de Visual Foxpro en Español
Saludos tengo una sentencia SQL muy larga la cual en algun lugar lei
que usando "?" puedo sustituir variables pero no me funciona. Las
variables estan todas definidas.

Esto es lo que estoy haciendo:

TEXT TO VQuery NOSHOW
INSERT INTO provee(nit, razon, nomcom, direccion, ciudad, telefono,
fax, regimen, atiende, op, e_mail, web, idedad, pdescu, fechareg,
fechamod, reg_merc, represent, autoret, estado, n_ref_1, d_ref_1,
t_ref_1, n_ref_2, d_ref_2, t_ref_2, n_ref_3, d_ref_3, t_ref_3,
n_clien_1, d_clien_1, t_clien_1, n_clien_2, d_clien_2, t_clien_2,
n_clien_3, d_clien_3, t_clien_3, idproduc1, idproduc2, idproduc3,
otrospro, cercamara, refescrita, cercalidad, copianit, estadosfin,
listaprecio, uorden, notas)
VALUES(?cnit, ?crazon, ?cnomcom, ?cdireccion, ?cciudad, ?ctelefono, ?
cfax, ?cregimen, ?catiende, ?cop, ?ce_mail, ?cweb, ?cidedad,
?cpdescu, ?cfechareg, ?cfechamod, ?creg_merc, ?crepresent, ?
cautoret, ?cestado, ?cn_ref_1, ?cd_ref_1, ?ct_ref_1, ?cn_ref_2, ?
cd_ref_2,
?ct_ref_2, ?cn_ref_3, ?cd_ref_3, ?ct_ref_3, ?cn_clien_1, ?
cd_clien_1, ?ct_clien_1, ?cn_clien_2, ?cd_clien_2, ?ct_clien_2, ?
cn_clien_3,
?cd_clien_3, ?ct_clien_3, ?cidproduc1, ?cidproduc2, ?cidproduc3, ?
cotrospro, ?ccercamara, ?crefescrita, ?ccercalidad, ?ccopianit,
?cestadosfin, ?clistaprecio, ?cuorden, ?cnotas)
ENDTEXT

cmd = SQLEXEC(lnHandle,VQuery)

MESSAGEBOX(VQuery) && para verificar pero las variables no se
sustituyen.... que puedo hacer....???

sip...@gmail.com

unread,
Sep 11, 2010, 5:30:21 PM9/11/10
to publice...@googlegroups.com
Captura el error del servidor usando la función . Aerror() ella te va a crear una matriz de 7 columnas y el mensaje de error al cual te rechaza el server sql

Saludos
Enviado desde mi BlackBerry de Movistar

Luis Mata

unread,
Sep 11, 2010, 7:59:03 PM9/11/10
to Comunidad de Visual Foxpro en Español
Hola

valor = 'Luis'

=sqlexec(lnHandle, "insert into mitabla(Nombre) values(?valor)")

el signo '?' pasa el valor a sql y sql lo interpreta como variable y lo
inserta en la tabla mitable, no tiene ninguna otra funcion. creo que te
dijeron algo muy mal.
esto mismo se aplica para update, select, pasar procedimientos almacenados

y cuando el procedure quieres que te devuelva un valor solo usas ?@valor

Si recien estas empezando no seas maleado empieza con sentencias cortas
hasta que entiendas la secuencia y despues has ese semejante insert.. jejeje
suerte

Luis

-----Original Message-----
From: Julio Cesar Vente Ruiz
Sent: Saturday, September 11, 2010 2:17 PM
To: Comunidad de Visual Foxpro en Espa�ol
Subject: [vfp] Sentencia SQL muy larga

Julio Cesar Vente Ruiz

unread,
Sep 11, 2010, 6:15:42 PM9/11/10
to publice...@googlegroups.com
Hola garcias a la ayuda de "sip...@gmail.com"  logré solucionar el problema.
Lo que pasaba era que tenia una variable fecha y estaba como texto, je je esos problemas de principiante...

Muchas gracias..

--


Julio Cesar Vente Ruiz

Julio Cesar Vente Ruiz

unread,
Sep 11, 2010, 6:16:22 PM9/11/10
to publice...@googlegroups.com
Ya solucionado gracias...

El 11 de septiembre de 2010 18:59, Luis Mata <lm...@cclf.com.pe> escribió:
Hola

valor = 'Luis'

=sqlexec(lnHandle, "insert into mitabla(Nombre) values(?valor)")

el signo '?' pasa el valor a sql y sql lo interpreta como variable y lo inserta en la tabla mitable, no tiene ninguna otra funcion. creo que te dijeron algo muy mal.
esto mismo se aplica para update, select, pasar procedimientos almacenados

y cuando el procedure quieres que te devuelva un valor solo usas ?@valor

Si recien estas empezando no seas maleado empieza con sentencias cortas hasta que entiendas la secuencia y despues has ese semejante insert.. jejeje suerte

Luis


-----Original Message----- From: Julio Cesar Vente Ruiz
Sent: Saturday, September 11, 2010 2:17 PM
To: Comunidad de Visual Foxpro en Español

Walter R. Ojeda Valiente

unread,
Sep 11, 2010, 6:59:33 PM9/11/10
to publice...@googlegroups.com
1. Verifica que el nombre de la Tabla sea el correcto
2. Verifica que el nombre de cada uno de los campos sea el correcto
3. Verifica que cada una de las variables (las que empiezan con ?) existan
4. Veriifica que tu clave primaria no esté duplicada
5. Verifica que la conexión a la Base de Datos pudo realizarse

Si todo lo anterior está bien y aún así no puedes grabar, entonces prueba grabando un solo campo, luego 2 campos, luego 3 campos, y así sucesivamente hasta encontrar el campo problemático.

Saludos.

Walter.

Douglas Sánchez Guillén

unread,
Sep 11, 2010, 8:07:47 PM9/11/10
to publice...@googlegroups.com
Hola que tal ami me pasa igual, ya probe de todo y voy a recortar la tabla tomare ese concejo a ver cual es el campo q me da problema ya que he buiscando x todos lados y nada.
 
saludes al foro ...

--
Douglas Sánchez Guillén
Tel 857-8475

Carlos Miguel FARIAS

unread,
Sep 12, 2010, 10:46:23 AM9/12/10
to publice...@googlegroups.com
Recuerden que una sentencia sql en fox no puede tener mas de 8192 caracteres, como en vfp 9 practicamente no hay "limite" logico para la construccion de sentencias sql, me han comentado en otros foros que al armar una sentencia sql que supere esa cantidad de caracteres, produce error.
Saludos: Miguel
Reply all
Reply to author
Forward
0 new messages