Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Maldito error.. list index out of bounds (0) (https://www.clubdelphi.com/foros/showthread.php?t=32021)

BlueSteel 24-05-2006 17:17:39

Maldito error.. list index out of bounds (0)
 
Hola amigos...

En una aplicación que realizo on Delphi 7 e Interbase 6.. me da este maldito error list index out of bounds (0), el cual me tiene los pelos de punta :eek: ya que necesito entregar un avance.. y no se como solucionarlo...

me explicare que tengo...

en el Formulario Principal llamado "menu" tengo la conexión a la DB llamada IDB_Compras, en el formulario llamado "proveedor" tengo :
2 TIBQuery.. IBQ_Select y IBQ_Edit
2 TIBTransaction.. IBT_Select y IBT_Edit

Además, en el formulario consta de... 1 DBGrid.. donde muestra un registro de todos los proveedores... boton para agregar, quitar y actualizar datos...

cuando ingreso al formulario.. se ejecuta el procedimeinto selecciona.. que es el siguiente

Código Delphi [-]
Procedure TProveedores.Selecciona;
Begin
     IBQ_Select.Close;
     IBQ_Select.SQL.Clear;
     IBQ_Select.SQL.Add('Select * From "Proveedor" Order By "Pro_Rut"');
     IBQ_Select.Open;
End;

el problema lo tengo para agregar.... y los procedimientos para agregar es

Código Delphi [-]
IBQ_Edit.SQL.Clear;
IBQ_Edit.SQL.Add('Insert Into "Proveedor" ("Pro_Rut","Pro_Razon","Pro_Direccion","Pro_Poblacion","Pro_Comuna","Pro_Fono","Pro_Fax)');
IBQ_Edit.SQL.Add('Values (:P1, :P2, :P3, :P4, :P5, :P6, :P7)');
IBQ_Edit.Params[0].AsString := vRut.Text;
IBQ_Edit.Params[1].AsString := vRaz.Text;
IBQ_Edit.Params[2].AsString := vDir.Text;
IBQ_Edit.Params[3].AsString := vPob.Text;
IBQ_Edit.Params[4].AsString := vCom.Text;
IBQ_Edit.Params[5].AsString := vTel.Text;
IBQ_Edit.Params[6].AsString := vFax.Text;
IBQ_Edit.ExecSQL;
IBT_Edit.Commit;
Limpia;
Selecciona;

en cuanto al procedimiento Limpia.. solo limpia las Edit que utilizo para ingresar datos...

para eliminar un registro utilizo esto.. y funciona bien
Código Delphi [-]
     Try
        If MessageDlg('Seguro de Eliminar al Proveedor'+#13+#13+ IBQ_Select['Pro_Razon'], mtConfirmation, [mbYes, mbNo], 0) = mrYes Then
           Begin
                IBQ_Edit.SQL.Clear;
                IBQ_Edit.SQL.Add('Delete From "Proveedor" Where "Pro_Rut"=:Var1');
                IBQ_Edit.Params[0].AsString := IBQ_Select['Pro_Rut'];
                IBQ_Edit.ExecSQL;
                IBT_Edit.Commit;
                IBT_Select.Commit;
                Selecciona;
           End
     Except
        ShowMessage('No existen registros que se puedan eliminar');
     End;

se supone que con IBQ_Select realizo todas las sentencias SQL para seleccionar y mostrar en el formulario.. y con IBQ_Edit realizo todas las sentencias de Eliminar, Actualizar y Agregar registros...

Antes lo habia utilizado de la misma forma y siempre me funciono.. pero ahora no se que pasa... y eso que instalé todos los programas de nuevo....

Héctor Randolph 24-05-2006 17:58:15

El error se produce porque intentas acceder a un elemento del arreglo de parámetros que no existe, revisa bien la sintaxis de la sentencia INSERT porque seguramente tienes un error.

Saludos

ContraVeneno 24-05-2006 17:59:08

¿y si pruebas con la propiedad ParamByName?
IBQ_Edit.ParamByName('P1').AsString := vRut.Text;


y te faltan unas comillas al final en :
... "Pro_Comuna","Pro_Fono","Pro_Fax")');

BlueSteel 24-05-2006 21:13:50

gracias.. ya lo solucione.... me habia faltado cerrar unas comillas.... que tonto soy... :p :p ahora tengo claro que este error se da cuando hay una sentencia mal escrita....:D :)

Las máquinas no se equivocan... los sw. tampoco (weno..salvo windows...:D )... eso de ser olvidadiso...

danielDelphi 17-02-2009 18:09:42

Ayuda por favor tengo delphi 5 y no se como guardar datos a traves de un query
 
BUenas tardes A todos
lo q pasa es q yo estoy iniciando en delphi y tengo q crear una aplicacion pek en delhpi 5 y no tengo ni la mas remota idea de como darle los paarametros al query
me presenta el error list index out of bounds(0), si bluesteel dice q es error de sintaxis pero no la veo mal, ademas es una sentencia muy basica
miren el codigo

Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject);
begin AlmacenarQry.CleanupInstance; AlmacenarQry.SQL.add('Insert Into "traslado" ("caso","asunto","program","ing_asig","bd_cono","fecha","tipo")');
AlmacenarQry.SQL.Add('Values(:P1, :P2, :P3, :P4, :P5, :P6, :P7)');
AlmacenarQry.Parameters[0].Value:=Edit1.text AKI SE REBIENTA CON EL LIST INDEX OUT OF BOUNDS:( AlmacenarQry.Parameters[1].Value:=Edit2.Text; AlmacenarQry.Parameters[2].Value:=Edit3.Text; if RadioBUtton1.Checked=True then Begin AlmacenarQry.Parameters[3].Value:=RadioButton1.Caption; end;

if RadioBUtton2.Checked=True then Begin AlmacenarQry.Parameters[3].Value:=RadioButton2.Caption; end;

if RadioBUtton3.Checked=True then Begin AlmacenarQry.Parameters[3].Value:=RadioButton3.Caption; end;

if RadioBUtton4.Checked=True then Begin AlmacenarQry.Parameters[3].Value:=RadioButton4.Caption; end;

if RadioBUtton5.Checked=True then Begin AlmacenarQry.Parameters[3].Value:=RadioButton5.Caption; end;

if RadioBUtton6.Checked=True then if Edit5.Text<> '' then Begin AlmacenarQry.Parameters[3].Value:=Edit5.Text; end;


AlmacenarQry.Parameters[3].Value:=Edit4.Text;
AlmacenarQry.Parameters[4].Value:=DateTimePicker1.Date;
AlmacenarQry.Parameters[5].Value:=COmbobox1.Text;
end;



serian tan amables de ayudarme a iniciar grax

roman 17-02-2009 18:26:05

No sé si tenga algo que ver pero esta sentencia:

Código Delphi [-]
AlmacenarQry.CleanupInstance

seguro que no hace bien. Está relacionada con la destrucción de objetos y no debe usarse directamente y menos en este contexto.

// Saludos

ContraVeneno 17-02-2009 18:53:37

Yo también creo que va por ahí, en lugar de "CleanupInstance" debería ser "SQL.Clear"

danielDelphi 19-02-2009 16:42:31

muchachos , cambie el "CleanUpInstance" por el SQL.Clear y me sigue rebentando con el error de list index out of bounds
Estoy desesperado, alguna otra idea:confused:
gracias

roman 19-02-2009 18:47:39

A ver. Yo lo que creo es que por alguna razón no está tomando encontrando los parámetros y puede deberse a alguna cuestión con las comillas, como en el mensaje inicial del hilo.

Justo después de las dos instrucciones AlmacenarQry.SQL.Add, copia el texto de AlmacenarQry.SQL.Text en algún lado, un memo, y pégalo aquí para ver cómo queda la consulta final y así podamos ver más claro dónde está el error.

// Saludos

danielDelphi 20-02-2009 15:43:44

Conexion ADO Y Tquery
 
roman, vea lo noto de raro, es que la conexion es TADOCONNECTION y la query es TQUERY
tendra eso algo q ver?
otra pregunta, ehh la query no debe estar almacenda en la bd cierto?
grax


La franja horaria es GMT +2. Ahora son las 10:30: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