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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Error "Statement too long" en ADO sobre Foxpro

Hola, tengo el siguiente problema trabajando con ADO y tablas DBF de Foxpro (índices CDX).

Tengo que enviar datos de mi aplicación a otra aplicación ajena que no puedo modificar, que guarda los datos en formato Foxpro.

La conexión la hago mediante ADO, ya probé también con BDE pero estropea los índices. La tabla tiene una cantidad grande de campos (casi 130), por lo que supongo el el error "Statement too long" al insertar un nuevo registro, es culpa de la cantidad de campos.

He intentado hacer un insert sólo con los campos que utilizo realmente, unos 15, pero entonces me da el error de que los campos no pueden tener el valor NULL, sea cual sea el campo que dejo fuera del insert.

Lo he intentado tanto con ADOTable como con ADOQuery, con el mismo resultado.

Resumiendo, me encuentro en un círculo vicioso, si utilizo todos los campos me da el error "Statement too long" si quito campos para evitar ese error, obtento "Field xxx: cannot be null", error que arreglaría volviendo a poner todos los campos...

Gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 24-03-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
¿estas haciendo la modificación mediante una consulta?

si es así, esto podría ser que estas escribiendo demasiado texto en una sola línea, para lo cuál deberías partirlo en varias líneas...

utilizando:
Código Delphi [-]
with TuConsulta do begin
 ...
 SQL.Add('Update...');
 SQL.Add('campos...');
 SQl.Add('mascampos..');
 SQl.Add('where...');
 ExceSQL
 ...
end;
__________________

Responder Con Cita
  #3  
Antiguo 24-03-2007
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Puede ser que los valores que no icluyes sea requeridos, hay que averiguar que tipo de datos almacena para poder enviar un " " o Un "0" o un Null.
Responder Con Cita
  #4  
Antiguo 24-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Cita:
Empezado por ContraVeneno
¿estas haciendo la modificación mediante una consulta?

si es así, esto podría ser que estas escribiendo demasiado texto en una sola línea, para lo cuál deberías partirlo en varias líneas...
Sí, ahora uso una consulta, pero también lo he intentado con ADOTable y con ADOCommand y obtengo el mismo resultado. Acabo de probar separando las líneas pero sigue dando el mismo problema.

Cita:
Empezado por mightydragonlor
Puede ser que los valores que no icluyes sea requeridos, hay que averiguar que tipo de datos almacena para poder enviar un " " o Un "0" o un Null.
Ya lo intenté, pero ahí es donde está el problema. Si dejo cualquier campo sin valor me da el error de que ese campo no puede ser nulo, si le asigno valores a todos los campos (un espacio o un 0 dependiendo del tipo), me da el error "Statement too long".

Gracias por vuestras respuestas, seguiré buscando a ver si encuentro la solución.
Responder Con Cita
  #5  
Antiguo 24-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Bueno, al fin encontré la solución, la pongo aquí por si alguien tiene el mismo problema.

Como dijo Contraveneno, tuve que separar la consulta en varias líneas. Pero aún así no iba. Lo que tuve que hacer además de separarla es usar parámetros para cada uno de los campos y darle el valor a los parámetros.

gracias por vuestra ayuda.
Responder Con Cita
Respuesta



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
Error Raro sobre archivo "ntdll.dll" que no consigo encontrar el motivo AGAG4 Impresión 1 23-11-2007 07:11:17
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
Ventana MDI, "Siempre visible" y "Pantalla completa" ixMike API de Windows 7 11-04-2007 18:36:55
¿cuál es mejor: "close" o "application.terminate"? unreal4u Varios 5 05-03-2007 11:01:19
porque no me reconoce los caracteres "*" ni "%" cuando filtro mrmago Conexión con bases de datos 10 27-01-2006 04:21:16


La franja horaria es GMT +2. Ahora son las 20:36:07.


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