Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2010
pdimasi2008 pdimasi2008 is offline
Registrado
 
Registrado: feb 2008
Posts: 7
Poder: 0
pdimasi2008 Va por buen camino
Problemas con TStringList

Buenas tardes les quisiera hacer la siguiente consulta,quisiera borrar las filas que el usuario selecciona en un dbgrid; bien creo un objeto , entonces instancio el mismo tantas filas el usuario haya seleccionado, los atributos de dicho objeto son : CodigoM, DescripcionM,RevisionM; asi tambien se llamaran las cabeceras de las columnas de ese dbgrid.
bien ,para esto utilizo un TStringList,instancio los objetos los cargos en la lista,pero..cuando quiero hacer un delete en la base de datos (Access) me tira error.... les paso el codigo:
y muchas gracias!
Código Delphi [-]
var
 sSQL: string;
 Manuales: TManuales;
 i,j,w: integer;
 FabManual:  TManualFactory;
 lista: TStringList;
 Marca: TBookmarkStr;
 MarcaLista: TBookmarkList;
 begin
   Marca:= self.DataSource1.DataSet.Bookmark;
   MarcaLista:= self.DBGridMan.SelectedRows;
   lista:= TStringList.Create;
   try
     for i:= 0 to MarcaLista.Count -1 do
     begin
      for j:= 0 to self.DBGridMan.Columns.Count-1 do
      begin
       lista.AddObject(self.DBGridMan.Fields[j].Text,FabManual.getInstance);
       self.DataSource1.DataSet.Bookmark:= MarcaLista[i]
      end;
    end;
    finally
     self.DataSource1.DataSet.Bookmark:= Marca;
   end;
  for w:= 0 to lista.Count do
  begin
    self.ADODataSet1.Close;
    self.ADODataSet1.Connection:= ADOConnection1;
    ADOConnection1.Open;
    sSQL:= 'delete from MANUALESPRODUCTO ' + ' where PLN_CODIGO = ' + QuotedStr((lista.Objects[w] as TManualFactory).CodigoM)+ 'and PLN_NRO_REV = ' +IntToStr((lista.Objects[w] as TManualFactory).RevisionM)
 'and PLN_DESCRIPCION = ' + QuoTedStr((lista.Objects[w] as TManualFactory).DescripcionM);
   ADOConnection1.Execute(sSQL);
    ADOConnection1.CommitTrans;
   
end;
 end;
les paso la unit donde creo los objetos...
Código Delphi [-]
TManualFactory = class(TObject)
  private
    FCodigoM: string;
    FDescripcionM: string;
    FRevisionM: integer;
    constructor Create;
  public
    class function getInstance: TManualFactory;
    property CodigoM: string read FCodigoM write FCodigoM;
    property DescripcionM: string read FDescripcionM write FDescripcionM;
    property RevisionM: integer read FRevisionM write FRevisionM;
    end;
implementation
var
 ManualFactory: TManualFactory;
 constructor TManualFactory.Create;
 begin
  self.FCodigoM:= '';
  self.FRevisionM:= 0;
  self.FDescripcionM:= '';
 end;
 class function TManualFactory.GetInstance: TManualFactory;
 begin
   Result:= ManualFactory;
 end;
initialization
 ManualFactory:= TManualFactory.Create;
finalization
 ManualFactory.Free;
end.
Responder Con Cita
  #2  
Antiguo 12-04-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Así sin que digas que error es el que te "tira", pues está un poco difícil ver donde podría estar tu problema. Ahora, revisando rápidamente tú código, veo que en la creación de la cadena SQL te faltan algunos espacios en blanco:

Código Delphi [-]
sSQL := 'delete from MANUALESPRODUCTO where PLN_CODIGO = ' + QuotedStr((lista.Objects[w] as TManualFactory).CodigoM) + 
  ' and PLN_NRO_REV = ' + IntToStr((lista.Objects[w] as TManualFactory).RevisionM) + 
  ' and PLN_DESCRIPCION = ' + QuoTedStr((lista.Objects[w] as TManualFactory).DescripcionM);


Saludos...
Responder Con Cita
  #3  
Antiguo 12-04-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 922
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Esta es otra forma de eliminar registros seleccionados en un DBGrid.

Código Delphi [-]
procedure TForm4.BitBtn1Click(Sender: TObject);
Var
     i:Integer;
begin
     with DBGrid1.DataSource.DataSet do
     Begin
          for i:=0 to DBGrid1.SelectedRows.Count-1 do
          begin

           GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));

           DBGrid1.DataSource.DataSet.Delete;

          end;
     End;
end;

Espero te ayude...

Saludos
Responder Con Cita
  #4  
Antiguo 14-04-2010
pdimasi2008 pdimasi2008 is offline
Registrado
 
Registrado: feb 2008
Posts: 7
Poder: 0
pdimasi2008 Va por buen camino
Bueno ya se por donde viene el problema...lastima que no se como solucionarlo todavia.... resulta que me olvide de comentar que cuando el usuario ingresa un codigo a borrar el dbgrid trae los datos de dos tablas (osea se realiza una union de dos tablas una de historico y otra de actual) bien el problema viene por ahy no se bien como hacer esto ya que el usuario puede elejir un registro de la tabla actual y otro de la tabla historico.Trate de hacer lo siguiente pero la verdad no tengo mucha idea...
Código Delphi [-]
sql:='delete from MANUALESPRODUCTO where = ' + QuotedStr((lista.Objects[w] as TManualFactory).CodigoM) join HISTORICOMANUALES where(HISTORICOMANUALES.PLNCODIGO = MANUALESPRODUCTO.PLN_CODIGO)'
Responder Con Cita
  #5  
Antiguo 15-04-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola pdimasi2008, podrías añadir la tabla a la que pertenece cada registro, eso en tu consulta que hace la Union y en tus objetos guardas también la tabla a la que pertenecen:

Código Delphi [-]
//En el primer campo tendrías la tabla a la que pertenece
Select 'NombreTabla1' As Tabla, ...... From Tabla1
UNION
Select 'NombreTabla2' As Tabla, ...... From Tabla2
 
//Para el Delete, recuperas el nombre de la tabla
 
aSql := 'Delete From '+TManualFactory(lista.Objects[w]).NombreTabla+' Where........'

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
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
Problemas con el delimitador de un TStringList Velia Varios 6 22-09-2008 18:29:43
tstringlist y nulos edgusano Varios 4 17-11-2005 22:06:54
TStringList y TObjectList TinkerBell OOP 1 31-08-2005 14:00:06
duda con tstringlist tutuk Varios 3 24-05-2005 22:04:25
TStringList esquerda21 Varios 10 19-01-2004 11:15:21


La franja horaria es GMT +2. Ahora son las 06:17:41.


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