Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2010
tubidericota tubidericota is offline
Registrado
 
Registrado: jun 2010
Posts: 6
Poder: 0
tubidericota Va por buen camino
Pocos parámetros. Se esperaba...

Buenas gente..
me encuentro con el siguiente problema y cualquier sugerencia o ayuda sera agradecida...
Estoy enviando (con ADOCommand) a una base access remota una instrucción Insert Into, hace la inserción pero luego devuelve el siguientes error de ODBC: 'Pocos parámetros. Se esperaba 9'.

Empezé con un error similar (sin que llegara a insertar), pero lo solucioné reemplazando (para los campos string) la doble comilla por el valor como resultado de la función quotedstr.

Les paso las instrucciones que arman el insert:

if length(adotable5.fieldbyname('memo').asstring) = 0 then mem:=' ' else mem:=(adotable5.fieldbyname('memo').asstring);
com.commandtext:='Insert Into MKB (nrokb, fecha, memo, r, k, g, anio, mes, dia) '+
'values ('+(adotable5.fieldbyname('nrokb').asstring) +
', '+quotedstr(adotable5.fieldbyname('fecha').asstring)+
', '+quotedstr(mem)+
', '+(adotable5.fieldbyname('r').asstring)+
', '+(adotable5.fieldbyname('k').asstring)+
', '+(adotable5.fieldbyname('g').asstring)+
', '+(adotable5.fieldbyname('anio').asstring)+
', '+(adotable5.fieldbyname('mes').asstring)+
', '+(adotable5.fieldbyname('dia').asstring)+')';
Responder Con Cita
  #2  
Antiguo 03-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Lo más sencillo es que coloques un punto de ruptura en ese punto y revises la consulta que se está generando; O un MessageBox donde puedas ver el contenido de la SQL.

Con eso, seguro que es más fácil saber lo que está pasando; Por ejemplo, que alguno de los campos esté vacío, nulo o incorrecto y al consultarlo como string te devuelva vacío, con lo que la SQL llevaría 2 comas seguidas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 03-06-2010
tubidericota tubidericota is offline
Registrado
 
Registrado: jun 2010
Posts: 6
Poder: 0
tubidericota Va por buen camino
Gracias por esponder Neftali.. ya superé esa instancia antes de postear, es más, antes de usar la Quotedstr guardé la instrucción que generaba (usando doble comilla) y la pegué en la interfaz de consulta de Access y funcionó bien... luego cuando encontré eso, y como digo en el post más arriba, hace la inserción, pero luego me devuelve ese error y detiene la ejecución..
Responder Con Cita
  #4  
Antiguo 03-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Sigo pensando que si no pones la consulta aquí es difícil ayudarte.
Otra cosa, que una consulta funcione dentro de Access, no significa que necesariamente deba funcionar desde Delphi+ADO, ya que Microsoft Access tiene una sintaxis más amplia que la del SQL estandard (que es la que usas con ADO).

Uno de los problemas que más suele dar es son los delimitadores de los distintos tipos de campos, junto con los formatos de fecha.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 03-06-2010
tubidericota tubidericota is offline
Registrado
 
Registrado: jun 2010
Posts: 6
Poder: 0
tubidericota Va por buen camino
te paso la consulta, tal como la genera la instrucción de arriba:

Código SQL [-]
Insert Into MKB (nrokb, fecha, memo, r, k, g, anio, mes, dia) values (15005, '04/06/10', ' ', 1, 0, 1, 0, 0, 20100604)

así como esta, hace la inserción pero devuelve el error de que se esperaban 9 parámetros.

el campo fecha es texto, memo es memo, el resto son numéricos.. los datos a insertar son tomados de una base (local) con la misma estructura.

Si en vez de la comilla simple (medianta Quotedstr) usamos la comilla doble (concatenándola) queda esta instrucción:

Código SQL [-]
Insert Into MKB (nrokb, fecha, memo, r, k, g, anio, mes, dia) values (15005, "04/06/10", " ", 1, 0, 1, 0, 0, 20100604)

No hace la inserción, y devuelve el error de que se esperaban 2 parámetros.

Gracias por tu ayuda..

Última edición por Casimiro Notevi fecha: 03-06-2010 a las 16:56:03.
Responder Con Cita
  #6  
Antiguo 03-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Si pones esto directamente en el ADOCommand te lo añade?
Prueba a cambiar algunos campos por NULL (en los que esté permitido), así sabrás en cual te está dando problemas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 03-06-2010
tubidericota tubidericota is offline
Registrado
 
Registrado: jun 2010
Posts: 6
Poder: 0
tubidericota Va por buen camino
directamente desde el com ya lo había probado, de todas maneras lo probe con los null como dijiste pero sigue haciendo lo mismo, de a uno e incluso con todos los campos en null (modifiqué la base para que acepte), me agrega un registro vacío y tira el error!... siempre el mismo, se esperaban 9 parámetros..
Responder Con Cita
  #8  
Antiguo 03-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.020
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por decir algo:

[quote]
nrokb___15005
fecha___'04/06/10'
memo____' '
r_______1
k_______0
g_______1
anio____0
mes_____0
dia_____20100604
[/quote

¿Puede ser el problema provocado porque el último dato no es correcto?, 20100604, puede que tenga que ser así:
[quote]
nrokb___15005
fecha___'04/06/10'
memo____' '
r_______1
k_______0
g_______1
anio____2010
mes_____06
dia_____04
[/quote
Responder Con Cita
  #9  
Antiguo 03-06-2010
tubidericota tubidericota is offline
Registrado
 
Registrado: jun 2010
Posts: 6
Poder: 0
tubidericota Va por buen camino
Gracias por responder Casimiro Notevi, en un principio era así, luego para simplificar una aplicación que usa la misma base se uso un campo solo, yo hago que la consulta inserte todo porque en el futuro se pude volver a usar.
De todas maneras le estoy insertando 0 a esos campos, no debería estar relacionado con el error..
Responder Con Cita
  #10  
Antiguo 03-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Lo raro es que llegue a insertar el registro.
No estará ejecutando otro código después de eso. ¿ Algún evento definido en algún control DataAware?

No se, me resulta extraño que inserte y luego salte el error.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 03-06-2010
tubidericota tubidericota is offline
Registrado
 
Registrado: jun 2010
Posts: 6
Poder: 0
tubidericota Va por buen camino
ahí estaba el tema... renegé tanto con esa cosulta hsta que encontré lo de las comillas, que luego caundo me tiró el error de los 9 parámetros (la consulta justo tiene 9!) asocié que seguia con la misma consulta, pero en realidad ejecutaba otra que venía luego de algunas líneas más a la que todavía no le había actualizado lo de las comillas... les agradesco la colaboración y les pido disculpas.. prometo prestar más atención para la próxima!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como desvirgar al Windows vista en pocos minutos ArdiIIa Seguridad 13 04-06-2008 22:26:03
Se esperaba un objeto Io HTML, Javascript y otros 3 04-10-2007 18:23:13
Erasmus pocos y parió la abuela. marcoszorrilla La Taberna 0 20-11-2006 08:32:20
Parametros Opcionales no Parametros por defecto Velia Varios 7 19-08-2006 16:18:42
Administrar Memoria de Una aplicación mediana en maquina con pocos recursos xtrem77 API de Windows 2 10-01-2004 02:22:52


La franja horaria es GMT +2. Ahora son las 10:29:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi