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 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.549
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.549
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



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 17:40:25
TIBQuery no devuelve todos los registros rochi SQL 0 27-02-2005 20:25:49
Destruir un TIBQuery furniman Varios 1 25-03-2004 13:20:14
Problemas con In en TIBQuery Rabata Conexión con bases de datos 1 15-10-2003 14:56:59
Problemas con In en TIBQuery Rabata SQL 1 15-10-2003 14:56:59


La franja horaria es GMT +2. Ahora son las 01:07:49.


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