Consultar Postgre desde C++Builder
Publicado por Cesar Noguera (1 intervención) el 26/05/2006 15:04:50
He desarrollado una aplicacion usando C++Builder y Oracle. Luego migré las tablas y todo la base de Datos a Postgre.
La aplicacion se conecta bien, ya la probé pero a la hora de hacer un select de la base de datos me da la cantidad de registro seleccionados con el Query1->RecordCount
Pero cuando llego a la linea
strcpy(Productos[i].Nb_Producto,Query1->Fields->Fields[1]->AsString.c_str());
me da este error= "List index out of bounds (1)"
Será que debo usar otro tipo de sintaxis, recuerden que este es mi codigo que funcionaba con oracle... pero si con este mismo codigo se conecta a la base de datos (en un servidor postgre) y hasta me da bien el resulatdo de cantidad de registros seleccionados... NO ENTIENDO QUE PASA...
les copi parte del codigo....
ResetQuery(Query1);
Query1->SQL->Add("Select COD_PROD, NB_PROD, NB_ABRV_PROD,COLOR_PROD from PRODUCTO_SISPOL");
Query1->Open();
if(Query1->RecordCount>0)
{
TOTAL_PRODUCTOS=Query1->RecordCount;
Productos = new PRODUCTOS[TOTAL_PRODUCTOS];
for(i=0;i<TOTAL_PRODUCTOS;i++)
{
strcpy(Productos[i].Cod_Prod,Query1->Fields->Fields[0]->AsString.c_str());
strcpy(Productos[i].Nb_Producto,Query1->Fields->Fields[1]->AsString.c_str());
strcpy(Productos[i].Nb_Abr_Prod,Query1->Fields->Fields[2]->AsString.c_str());
Productos[i].Color=Query1->Fields->Fields[3]->AsInteger;
Query1->FindNext();
}
La aplicacion se conecta bien, ya la probé pero a la hora de hacer un select de la base de datos me da la cantidad de registro seleccionados con el Query1->RecordCount
Pero cuando llego a la linea
strcpy(Productos[i].Nb_Producto,Query1->Fields->Fields[1]->AsString.c_str());
me da este error= "List index out of bounds (1)"
Será que debo usar otro tipo de sintaxis, recuerden que este es mi codigo que funcionaba con oracle... pero si con este mismo codigo se conecta a la base de datos (en un servidor postgre) y hasta me da bien el resulatdo de cantidad de registros seleccionados... NO ENTIENDO QUE PASA...
les copi parte del codigo....
ResetQuery(Query1);
Query1->SQL->Add("Select COD_PROD, NB_PROD, NB_ABRV_PROD,COLOR_PROD from PRODUCTO_SISPOL");
Query1->Open();
if(Query1->RecordCount>0)
{
TOTAL_PRODUCTOS=Query1->RecordCount;
Productos = new PRODUCTOS[TOTAL_PRODUCTOS];
for(i=0;i<TOTAL_PRODUCTOS;i++)
{
strcpy(Productos[i].Cod_Prod,Query1->Fields->Fields[0]->AsString.c_str());
strcpy(Productos[i].Nb_Producto,Query1->Fields->Fields[1]->AsString.c_str());
strcpy(Productos[i].Nb_Abr_Prod,Query1->Fields->Fields[2]->AsString.c_str());
Productos[i].Color=Query1->Fields->Fields[3]->AsInteger;
Query1->FindNext();
}
Valora esta pregunta


0