Ver Mensaje Individual
  #12  
Antiguo 12-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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 jrla.

Para el ejemplo crea dos tablas iguales, menos en el nombre claro
Código SQL [-]
SET TERM ^;

CREATE TABLE TEST (
    ID      INTEGER,
    CADENA  VARCHAR(50)
)^

CREATE TABLE TEST2 (
    ID      INTEGER,
    CADENA  VARCHAR(50)
)^

SET TERM ;^
Y cargale algunos datos a la primer tabla (orígen).

En un form pone,
Código:
1 (un ) TIBDatabase    (IBDatabase1)
1 (dos) TIBTransaction (IBTransaction1) 
2 (dos) TIBDataSet     (ibdsSource y ibdsTarget)
2 (dos) TDataSource    (dsSource, dsTarget)
2 (dos) TDBGrid.       (dbgSource, dbgTarget)
1 (un ) TButton        (btnPassData)
Ejemplo:
Código PHP:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
/* tabla origen */
  
ibdsSource->Close();
  
ibdsSource->Database IBDatabase1;
  
ibdsSource->SelectSQL->Text "SELECT * FROM TEST";
  
ibdsSource->Open();
  
// DataSource origen
  
dsSource->DataSet ibdsSource;
  
// DBGrid origen
  
dbgSource->DataSource dsSource;
  
dbgSource->Options TDBGridOptions(dbgSource->Options)<< dgMultiSelect;
  
dbgSource->Options TDBGridOptions(dbgSource->Options)<< dgRowSelect;
  
dbgSource->PopupMenu PopupMenu1;

  
/* tabla destino */
  
ibdsTarget->Close();
  
ibdsTarget->Database IBDatabase1;
  
ibdsTarget->SelectSQL->Text "SELECT * FROM TEST2";
  
ibdsTarget->Open();
  
// DataSource destino
  
dsTarget->DataSet ibdsTarget;
  
// DBGrid destino
  
dbgTarget->DataSource dsTarget;
}

void __fastcall TForm1::btnPassDataClick(TObject *Sender)
{
  if (
dbgSource->SelectedRows->Count 0) {
    for(
int i 0dbgSource->SelectedRows->Counti++) {
      
ibdsSource->GotoBookmark((void*)dbgSource->SelectedRows->Items[i].c_str());
      
ibdsTarget->Insert();
      for(
int j 0ibdsSource->Fields->Countj++)
        
ibdsTarget->Fields->Fields[j]->Value ibdsSource->Fields->Fields[j]->Value;
      
ibdsTarget->Post();
    }
  }

El código pasa los registros que hayas seleccionado en dbgSource (mediante Ctrl+Click) a dbgTarget (en realidad de ibdsSource a ibdsTarget), cuando se presiona el botón btnPassData.

Está realizado y probado en C++ Builder 6 y Firebird 2.5.

Saludos
__________________
Daniel Didriksen

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