Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-08-2011
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
salida de indice al borrar

hola,

el siguiente codigo, recorre la tabla en busca de unos apellidos y nombre, cuando lo encuentra debe borrarlos previo mensaje de aviso al usuario...

Código Delphi [-]
procedure Tformulario1.sButton2Click(Sender: TObject);
var
  j: integer;
  ape,nom: string;

begin
 //i:= lista2.ItemIndex;
  for j := 0 to adotabla.FieldCount - 1 do
    begin
      ape:= adoTabla.FieldByName('APELLIDOS').AsString + ' ';
      nom:= adoTabla.FieldByName('NOMBRE').AsString;
      if lista2.items.Strings[j] = ape+nom then   //aqui salida de indices
        adotabla.delete;
    end;
  adotabla.Close;
end;

Borrar borra, pero no lo hace de manera muy limpia y aunque borra el registro, devuelve el mensaje de error "salida de indices...." que he marcado en negrita.

Espero podais ayudarme, un saludo y gracias
Responder Con Cita
  #2  
Antiguo 20-08-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Hola, esto no tiene nada que ver con "Conexión con bases de datos", lo paso a "Varios", y recuerda seguir nuestras normas, gracias.
Responder Con Cita
  #3  
Antiguo 22-08-2011
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
buenos dias,

perdona casimiro noveti, pero como el fondo de mi pregunta esta relacionado con la base de datos de donde se deben borrar los registros, pense y decidi (como dicen las normas) que ese era el sitio indicado. Si no es asi, me disculpo por ello, es de ser humilde reconocer nuestros errores.

Y sobre mi pregunta, a ver si alguien puede echarme una mano por que me he quedao pillao en este punto.

un saludo y gracias.
Responder Con Cita
  #4  
Antiguo 22-08-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Hola, no hay problema, todos nos equivocamos y yo el primero

En relación a tu pregunta, ¿por qué no lo haces directamente con sql?, o sea, algo así como:

Código Delphi [-]
dataset.close;
dataset.sql.text:='delete from tabla where nombre= :nombre and apellido= :apellido';
dataset.params[0]:=adoTabla.FieldByName('nombre').AsString;
dataset.params[1]:=adoTabla.FieldByName('apellido').AsString;
dataset.execquery;
Responder Con Cita
  #5  
Antiguo 22-08-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Hola,

no sé, a bote pronto me chirría la línea
Código Delphi [-]
  for j := 0 to adotabla.FieldCount - 1 do

No recorres la tabla, sino los campos de la misma.

No será
Código Delphi [-]
  for j := 0 to adotabla.RecordCount - 1 do

Si te da error de indices, seguramente será del stringGrid, que no tiene tantos elementos como campos tu tabla.

Prueba a ver.... y nos cuentas.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #6  
Antiguo 26-08-2011
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
buenas...

estoy frito ya con esto ehh, he tardao en contestar por que intento hacer que funcione pero nada. Lo que hago es comparar el cliente marcado con un checkbox en un checklistbox con los valores de la variable "apenom" en la que previamente he metido los datos de

Código Delphi [-]
adotabla.fieldbyname('APELLIDOS').AsString;
y
Código Delphi [-]
adotabla.fieldbyname('NOMBRE').AsString;

si son iguales, borra de la tabla el cliente seleccionado, hasta ahi la teoria, pero no consigo que corra.

Alguna idea?
un saludo y gracias.
Responder Con Cita
  #7  
Antiguo 26-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Daniel.

Por lo que interpreto en un CheckListBox tenés cargados los apellidos+nombres de una tabla, en una variable 'apenom' un apellido+nombre y para que un dato sea borrado, son requisitos:
  1. Que esté tildado en el CheckListBox.
  2. Que el item sea igual al contenido de la variable 'apenom'.

Si no me equivoco, podrías hacer algo así:
Código Delphi [-]
procedure TForm1.btBorraSelecClick(Sender: TObject);
var
  i: Integer;
  Ape,Nom: string;
begin
  with CheckListBox1 do
  begin
    for i:= 0 to Items.Count -1 do
      if (Checked[i])and(Items[i] = apenom) then
        if MessageDlg('¿Desea borrar '+Items[i]+'?',mtConfirmation,[mbYes,mbNo],0)= mrYes then
        begin
          Ape:= Copy(Items[i],1,Pos(' ',Items[i])-1);
          Nom:= Copy(Items[i],Pos(' ',Items[i])+1,MaxInt);
          ADOTabla.Locate('APELLIDO;NOMBRE',VarArrayOf([Nom,Ape]),[loCaseInsensitive]);
          ADOTabla.Delete;
        end;
  end;
end;
Esto siguiendo el planteo que indicas, pero coincido con Casimiro que es más sencillo con una sentencia SQL.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-08-2011 a las 01:17:30.
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
Entrada RA0, salida RB0 REHome ASM y Microcontroladores 2 02-03-2008 18:21:48
Redirigir salida de lpt a usb zugazua2001 Varios 1 30-11-2006 21:21:58
Borrar lineas detalle al borrar registro maestro akinom38 Conexión con bases de datos 3 11-01-2006 10:38:07
borrar los campos de un DBGrid sin borrar los titulos de las columnas Torreblanca OOP 2 02-08-2005 00:12:52
Orden de Salida kwan Varios 7 09-12-2003 02:11:31


La franja horaria es GMT +2. Ahora son las 13:53:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi