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-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
Question TIbquery

Hola!! Vereis tengo un procedimiento al cual le paso como parametro un array dinamico string para los campos de la tabla y un string que sera el nombre de la tabla. Tengo otro array dinamico declarado global para los valores(VNuevos). En este procedimiento es dnd voy a realizar una consulta insert. Mi problema es q no tengo ni idea de como recorrer los dos arrays para poder hacer la consulta. Yo hago lo siguiente:

procedure TForm1.OpInsert(campos : array of string; Tabla:String);
var
i,j : integer;
begin
with DM do
begin
for i:=0 to high(campos) do
QrOperacion.SQL.Add('insert into ' + Tabla + '(' + campos[i] + ')');
for j:=0 to high(VNuevos) do
QrOperacion.SQL.Add('values (' + VNuevos[j] + ')');
QrOperacion.open;
end;

end;

El error que me da es: Acces violation at address 00404567;

A ver si alguien puede ayudarme. Muxas gracias
Responder Con Cita
  #2  
Antiguo 02-05-2006
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.285
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
Por favor, utiliza TAG's de Delphi (ultimos botones del editor) cuando introduzcas código.
Independientemente de que el código funcione o no, el error de "Access Violation" suele ser por un acceso a memoria incorrecto (algo que no está creado correctamente -dirección incorrecta-).

Ejecuta este código paso a paso y dinos en qué linea falla exactamente, seguramente alguno de los objetos que estás usando está a nil.

Además de lo comentado, apuntarte un par de cosas.
* Si usas el HIGH en un for (para el limite superior), lo lógico sería utilizar el LOW para el límite inferior.
* Si a cada vuelta del FOR, añades el texto:
'insert into ' + Tabla + '(' + campos[i] + ')'
a la SQL, al final del bucle tendrás un SQL como ésta:
Código SQL [-]
insert into NombreTabla (campo1) insert into NombreTabla (campo2)  insert into NombreTabla (campo3) 
insert into NombreTabla (campo4) insert into NombreTabla (campo5) ...
__________________
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 02-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
Gracias x contestar tan rapido. No entiendo lo de los tags . Me hace lo que dices pero es q no se como hacerlo. El error da en el segundo for. He puesto el low

with DM do
begin
for i:=low(campos) to high(campos) do
QrOperacion.SQL.Add('insert into ' + Tabla + '(' + campos[i] + ')');
for j:=low(campos) to high(VNuevos) do
QrOperacion.SQL.Add('values (' + VNuevos[i] + ')');
end;
Responder Con Cita
  #4  
Antiguo 02-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
Buenas otra vez. Lo he planteado de otro forma xo me sigue dando error. He decidido recorrer los arrays e introducirlos en una vble string.

procedure TForm1.OpInsert(campos : array of string; Tabla:String);
var
i,j: integer;
ConsultCamp,ConsultValor : String;
begin
with DM do
begin
for i:=low(campos) to high(campos) do
ConsultCamp := ConsultCamp + '''' + campos[i] + '''' + ',' ;
ConsultCamp := copy (ConsultCamp,-1,length(ConsultCamp)-2);

for j:=low(VNuevos) to high(VNuevos) do
ConsultValor := ConsultValor + '''' + VNuevos[j] + '''' + ',' ;
ConsultValor := copy(ConsultValor,-1,length(ConsultValor)-1);

{Memo1.Lines.Add(ConsultCamp);
Memo1.Lines.Add(ConsultValor);}
QrOperacion.SQL.Add('insert into ' + Tabla + '(' + ConsultCamp + ')');
QrOperacion.SQL.Add('values (' + ConsultValor + ')');
QrOperacion.Open;
end;
end;
Pero me da un error: sql Parse error: EOF in string detected'
Responder Con Cita
  #5  
Antiguo 02-05-2006
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.285
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
¿Cómo resaltar la sintaxis Delphi?

link


Añade esta línea antes del open y dinos qué te devuelve:

Código Delphi [-]
  MessageDlg('SQL: ' + QrOperacion.SQL.Text , mtWarning, [mbOK], 0);
__________________
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
  #6  
Antiguo 02-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
ahhhh!!!! Vale, me faltaba la comilla final. Lo q pasa es q me da un error: sql error code = -104 'Token unknow - line 1, char 26 'Nombre''. El 1º campo es el q no me reconoce.
Responder Con Cita
  #7  
Antiguo 02-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
Encontre el error

Muxas gracias x todo. El error q me daba era xq en los campos habia puesto comillas simples y son dobles. Gracias x atenderme!!
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
TIBTable ó TIBQuery Loviedo Firebird e Interbase 5 25-05-2005 16:40:25
TIBQuery no devuelve todos los registros rochi SQL 0 27-02-2005 19:25:49
Destruir un TIBQuery furniman Varios 1 25-03-2004 12:20:14
Problemas con In en TIBQuery Rabata Conexión con bases de datos 1 15-10-2003 13:56:59
Problemas con In en TIBQuery Rabata SQL 1 15-10-2003 13:56:59


La franja horaria es GMT +2. Ahora son las 20:39:45.


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