Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error cuando una consulta Postgres no retorna valor

Estas en el tema de Error cuando una consulta Postgres no retorna valor en el foro de C/C++ en Foros del Web. Hola..necesito ayuda URGENTE!!!!!!!!!!!!!! estoy haciendo un sistema de control de stock y mi problema es el siguiente: cuando el usuario ingresa un codigo de producto ...
  #1 (permalink)  
Antiguo 03/03/2008, 21:58
 
Fecha de Ingreso: febrero-2008
Mensajes: 4
Antigüedad: 16 años, 3 meses
Puntos: 0
Error cuando una consulta Postgres no retorna valor

Hola..necesito ayuda URGENTE!!!!!!!!!!!!!!

estoy haciendo un sistema de control de stock y mi problema es el siguiente: cuando el usuario ingresa un codigo de producto inexistene (el codigo es la PK en la base de datos - trabajo con Postgres) para generar una venta aparece un error y se finaliza el programa...

aca les dejo el codigo:


////// PREGUNTO SI EXISTE EL PRODUCTO --- SI NO EXISTE EL CODIGO EN LA BASE DE DATOS EN ESTE PASO TIRA EL ERROR

sprintf(sqll,"select codigo from productos where codigo=%d",m_codigo);
padre->result=PQexec(padre->cone,sqll);
co=atoi(PQgetvalue(padre->result,0,0));
if(co!=m_codigo){
MessageBox("El codigo ingresado es inexistente");
return;
}

//// SI EXISTE EL PRODUCTO ENTRA AL ELSE

else{
sprintf(sql2,"select cantidad,precio_unitario from ventas_tmp where cod_producto=%d",m_codigo);

padre->result=PQexec(padre->cone,sql2);
if(PQresultStatus (padre->result)==PGRES_TUPLES_OK){
c=atoi(PQgetvalue(padre->result,0,0));
p=atof(PQgetvalue(padre->result,0,1));
t=(c+m_cantidad)*p;
cant=c+m_cantidad;
sprintf(sql3,"update ventas_tmp set cantidad=%d, precio_total='%f' where cod_producto=%d",cant,t,m_codigo);

padre->result=PQexec(padre->cone,sql3);
if(PQresultStatus (padre->result)==PGRES_COMMAND_OK){
MessageBox("Se añadio correctamente");
t=m_total+(m_cantidad*p);
}else{
MessageBox("No se pudo añadir");
}
}else{

sprintf(sql1,"select descripcion,cantidad,precio_venta from productos where codigo=%d",m_codigo);

padre->result=PQexec(padre->cone,sql1);
if(PQresultStatus(padre->result)==PGRES_TUPLES_OK){

desc=PQgetvalue(padre->result,0,0);
c=atoi(PQgetvalue(padre->result,0,1));
p=atof(PQgetvalue(padre->result,0,2));
t=p*m_cantidad;
j=m_total;


if(m_cantidad<=c){

sprintf(sql,"insert into ventas_tmp (cod_producto,descripcion,cantidad,precio_unitario ,precio_total,fecha_venta)values(%d,'%s',%d,'%f',' %f','%d-%d-%d')",m_codigo,desc,m_cantidad,p,t,m_fecha.GetMont h(),m_fecha.GetDay(),m_fecha.GetYear());
padre->result = PQexec(padre->cone,sql);
if(PQresultStatus(padre->result)!=PGRES_COMMAND_OK){
MessageBox(PQresultErrorMessage (padre->result));
}else{
MessageBox("Se añadio correctamente");
t=t+j;

}
}else{
MessageBox("La cantidad solicitada supera la cantidad del Stock");
t=m_total;
}


}else{
MessageBox("El codigo agregado es inexistente");
}
}
}


Bueno...espero que me puedan ayudar ... mi verdadero problema es que nose bien como preguntar o qué hacer cuando no se trae ningun dato de la consulta SQL... se lo agradecere mucho!!!
  #2 (permalink)  
Antiguo 04/03/2008, 07:27
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: Error cuando una consulta Postgres no retorna valor

Entonces verifica que tengas algún registro en la respuesta:
Código:
if(PQntuples(padre->result)>0)
{
   c=atoi(PQgetvalue(padre->result,0,0));
   p=atof(PQgetvalue(padre->result,0,1));
   ...
}
Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:19.