Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Una ejecucion que devuelva múltiples resultados (https://www.clubdelphi.com/foros/showthread.php?t=87950)

Mario94 23-03-2015 19:37:06

Una ejecucion que devuelva múltiples resultados
 
Gracias de antemano por la ayuda.

Tengo ingresar en una BD en Access el id y el grupo pero me esta arrojando: que el proveedor actual no permite una única ejecucion que devuelva múltiples resultados. Como se soluciona?
Este es el código, el id no lo puedo poner de otra forma pues no me corre en Embarcadero C++ 2010, esta es la unica forma en la que corre.
Código Delphi [-]

void __fastcall TForm2::SpeedButton1Click(TObject *Sender)
{
if (!Edit1->Text.IsEmpty())
{
 ADOQuery1->Close();
 ADOQuery1->SQL->Clear();
 String id = "SELECT MAX(IdGrupos) AS Maximo FROM Grupos";
 ADOQuery1->SQL->Add(id);
 ADOQuery1->Open();
 String idincrementado = ADOQuery1->FieldByName("Maximo")->AsInteger + 1 ;
 ADOQuery1->Close();
 ADOQuery2->Close();
 ADOQuery2->SQL->Clear();
 String ingresargrupos = "INSERT INTO Grupos VALUES ('"+idincrementado+"','"+Edit1->Text+"')" ;
 ADOQuery2->SQL->Add(ingresargrupos);
 ADOQuery2->Open();
 ADOQuery2->Close();

}
else
{
String titulo = "ERROR" ;
String mesage = "La casilla grupo se encuentra vacia" ;
Application->MessageBoxA(mesage.c_str(),titulo.c_str(),MB_ICONERROR);
}
}

ozsWizzard 23-03-2015 20:14:22

Creo que la ADOQuery2 debería ser un exec y no un open. (no recuerdo ahora si ExecSql, exec o execute, pero una de las 3)

ecfisa 23-03-2015 20:17:02

Hola Mario94.

Código PHP:

...
{
  if (! 
Edit1->Text.IsEmpty()) {
    
TADOQuery *q1 static_cast<TADOQuery*>(ADOQuery1);
    
TADOQuery *q2 static_cast<TADOQuery*>(ADOQuery2);

    
q1->Close();
    
q1->SQL->Text "SELECT MAX(IDGRUPOS) + 1 AS MAXIMO FROM GRUPOS";
    
q1->Open();
    
    
q2->Close();
    
q2->SQL->Text "INSERT INTO GRUPOS (COL_A_INSERTAR_1, COL_A_INSERTAR2) VALUES(:PAR1, :PAR2)"//(*)
    
q2->Parameters->ParamByName("PAR1")->Value q1->FieldByName("MAXIMO")->Value;
    
q2->Parameters->ParamByName("PAR2")->Value Edit1->Text;
    
q2->ExecSQL();

    
q1->Close();
    
q2->Close();
  }
  ...


(*) COL_A_INSERTAR 1 y 2, son los nombres de columnas (campos) donde vas a insertar los datos.

Saludos :)

Mario94 23-03-2015 20:41:25

Una ejecucion que devuelva múltiples resultados
 
Gracias a todos funciona de maravilla


La franja horaria es GMT +2. Ahora son las 10:18:46.

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