Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Componente ADO

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Componente ADO Responder citando

Buenas Noches

Espero que alguien pueda colaborarme con lo sgte:
Al presionar un boton, cargo una tabla de mi Base de datos desde un archivo en excel que contiene 2 hojas de calculo (una que contiene datos de estudiantes y la otra contiene la de docentes) utilizando ADOConnection y 2 ADOTables . Cada ADOTABLE apunta a una hoja de calculo. El problema esta en que me aparece un mensaje de error que dice aunq si carga la tabla:
Project SOFTGER.EXE raised exception class EVariantTypeCastError with message 'Could not convert variant of type (null) into type (String). Process stopped.

Este es el codigo con el que cargo :

void __fastcall TActDat::BitBtn3Click(TObject *Sender)
{
if (OpenDialog1->FileName=="")
ShowMessage("Primero debe seleccionar un archivo para cargar.");
else {
StatusBar1->SimpleText="";
StatusBar1->SimpleText=("Actualizando Base de datos local");
AnsiString id,nombre,facultad="";
DBMod->ADOTable2->First();
while( !DBMod->ADOTable2->Eof )
{
id=DBMod->ADOTable2->Fields->FieldByName("Id")->AsString;
nombre=DBMod->ADOTable2->Fields->FieldByName("Nombres completos")->AsString;
facultad=DBMod->ADOTable2->Fields->FieldByName("Estudiante Programa 1")->AsString;
DBMod->IBStoredProc1->StoredProcName="AGR_EST";
DBMod->IBStoredProc1->ParamByName("ID")->AsString=id;
DBMod->IBStoredProc1->ParamByName("NOMBRE")->AsString=nombre;
DBMod->IBStoredProc1->ParamByName("FACULTAD")->AsString=facultad;
DBMod->IBStoredProc1->Prepare();
DBMod->IBStoredProc1->ExecProc();
DBMod->IBQuery1->SQL->Clear();
DBMod->IBQuery1->SQL->Add("COMMIT;");
DBMod->IBQuery1->ExecSQL();
id=""; nombre=""; facultad="";
DBMod->ADOTable2->Next();
}

DBMod->ADOTable1->First();
while( !DBMod->ADOTable1->Eof )
{
id=DBMod->ADOTable1->Fields->FieldByName("CEDULA")->AsString.TrimLeft();
nombre=DBMod->ADOTable1->Fields->FieldByName("NOMBRE DEL EMPLEADO")->AsString;
DBMod->IBStoredProc1->StoredProcName="AGR_DOC";
DBMod->IBStoredProc1->ParamByName("CED")->AsString=id;
DBMod->IBStoredProc1->ParamByName("NOMBRE")->AsString=nombre.UpperCase();
DBMod->IBStoredProc1->Prepare();
DBMod->IBStoredProc1->ExecProc();
DBMod->IBQuery1->SQL->Clear();
DBMod->IBQuery1->SQL->Add("COMMIT;");
DBMod->IBQuery1->ExecSQL();
id=""; nombre="";
DBMod->ADOTable1->Next();
}

StatusBar1->SimpleText="";
StatusBar1->SimpleText=("Base de datos actualizada");
}

Espero su pronta respuesta. Gracias[/img][/code]
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

El mensaje es muy claro... no puede covertir un valor NULO en cadena. Lo más probable es que alguno de los datos estén en blanco. Es decir que contengan una cadena vacia. En todo caso podrias implemnetar una verificación antes de realizar la asignación de datos.

Saludos.
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Respuesta a Buildero Responder citando

Hola Buildero
Yo Revice el archivo porque pense lo mismo que usted y no hay celdas vacias, las celdas que tenia vacias las llene con un valor.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Bueno, pues lo unico que se me ocurre por el momento es utilizar puntos de ruptura, y averiguar en que iteración de el/los cilclo(s) se encuentra la falla.

Saludos
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.