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