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 24-08-2013
exequielmatias1 exequielmatias1 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 29
Poder: 0
exequielmatias1 Va por buen camino
Lightbulb Guardar columna dbgrid en un solo campo de una bd

Holaa! Queria saber si se puede guardar una columna de un dbgrid en un solo campo de una base de datos.

Tengo un dbgrid que me muestra el resultado de una consulta anterior en una sola columna ej "Nombres"
todos esos Nombres que me muestra el dbgrid quiero guardarlos en un solo campo (deudores) de una base de datos.
por ej el dbgrid me muestra lo siguiente:

Nombres
--------
Pablo
Pedro
Lucas

y en el campo Deudores de mi base de datos quiero que se guarden estos nombres ej
Pablo, Pedro, Lucas
Responder Con Cita
  #2  
Antiguo 24-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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.

Código Delphi [-]
procedure SaveCol(aGrid: TDBGrid; const ColNro: Integer; 
  aDataSet: TDataSet; const aFieldName: string);
var
  BM: Pointer;
  s : string;
begin
  with aGrid.DataSource.DataSet do
  begin
    DisableControls;
    BM := GetBookmark;
    try
      First;
      while not Eof do
      begin
        s := s + aGrid.Columns[ColNro].Field.AsString + ',';
        Next;
      end;
      SetLength(s,Length(s)-1);
    finally
      GotoBookmark(BM);
      FreeBookmark(BM);
      EnableControls;
    end;
  end;
  with aDataSet do
  begin
    Append;
    FieldByName(aFieldName).AsString := s;
    Post;
  end;
end;

Ejemplo de uso:
Código Delphi [-]
  // Se supone a DataSet1 abierto
  SaveCol(DBGrid1, 1, DataSet1, 'Campo');

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 24-08-2013
exequielmatias1 exequielmatias1 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 29
Poder: 0
exequielmatias1 Va por buen camino
Holaaa!! gracias por tu rapida contestación! lo probe y me aparece este error: 'list index out of bounds (1)' probe con 0 y corrio sin errores pero no se guarda nada en la bd, sinceramente no tengo mucho conocimiento en delphi, no sabria como solucionar este error..
otra consulta.. entiendo que en DataSet1 debo poner mi ADOQuery donde tengo enlazada a la tabla destino...
Responder Con Cita
  #4  
Antiguo 24-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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.
Cita:
lo probe y me aparece este error: 'list index out of bounds (1)' probe con 0 y corrio sin errores
Si tu DBGrid tiene una sola columna es un error lógico y esperable, la primer columna tiene índice 0.

Cita:
pero no se guarda nada en la bd, sinceramente no tengo mucho conocimiento en delphi, no sabria como solucionar este error..
En el ejemplo supongo que existe un componente data aware que, TDataSource mediante, está asociado al TDBGrid y otro que, en tu caso puede ser un TADOTable, TADODataSet o un TADOQuery.

No sé cuál de ellos te decidas a usar para guardar los datos en la otra tabla de acuerdo a eso será la sintáxis a usar. La del ejemplo funcionaría bién para un TADOTable o un TADODataSet.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 24-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 de nuevo.

Para no dejar las tareas a medias, un ejemplo usando un TDBGrid con una sola columna, asociado a un TADOQuery y un TADODataSet asociado a la tabla destino.

Código Delphi [-]
procedure SaveCol(aGrid: TDBGrid; const ColNro: Integer;
  aDataSet: TADODataSet; const TargetFieldName: string);
var
  BM: Pointer;
  s : string;
begin
  // Armar cadena desde la tabla destino
  with aGrid.DataSource.DataSet do
  begin
    DisableControls;
    BM := GetBookmark;
    try
      First;
      while not Eof do
      begin
        s := s + aGrid.Columns[ColNro].Field.AsString + ',';
        Next;
      end;
      SetLength(s,Length(s)-1);
    finally
      GotoBookmark(BM);
      FreeBookmark(BM);
      EnableControls;
    end;
  end;
  // Guardar resultado en campo de tabla destino
  with aDataSet do
  begin
    Append;
    FieldByName(TargetFieldName).AsString := s;
    Post;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveCol(DBGrid1, 0, ADODataSet1, 'NAME');
end;
El ejemplo está probado y funcionando.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Hacer que una columna de un DbGrid aparezca distinta según valor Aprendiendo OOP 11 30-11-2018 14:47:20
Colocar Ancho De columna de un DBGrid dependiendo del ancho del maximo campo guardado gulder Varios 3 08-11-2008 12:27:34
Guardar Caption de varios DBCheckBox asignados a un solo campo TrUnkS Conexión con bases de datos 3 07-01-2006 00:33:14
Como Pintar Solo la Celda y No Toda la Columna de la Celda de un dbGrid?? AGAG4 Varios 11 15-11-2004 20:53:28
Actualizar un campo segun opcion de picklist de otra columna de un dbgrid nefy Conexión con bases de datos 5 17-01-2004 20:11:34


La franja horaria es GMT +2. Ahora son las 01:02:12.


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