FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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:
__________________
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. |
#3
|
|||
|
|||
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; |
#4
|
|||
|
|||
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' |
#5
|
||||
|
||||
¿Cómo resaltar la sintaxis Delphi?
link Añade esta línea antes del open y dinos qué te devuelve:
__________________
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. |
#6
|
|||
|
|||
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.
|
#7
|
|||
|
|||
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!!
|
|
|
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 |
|