Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 29 Jun, 2007 11:19 am Asunto: Parámetros en un query |
|
|
Tengo un query con bastantes campos (24 en total) que creo en función dependiendo si es un registro nuevo (INSERT) o antiguo (UPDATE). Para evitar tener que teclearme los nombres se me había ocurrido adaptar una rutina, que ya pues por aquí, para cargar los parámetros. Esto me permite, además, no modificar el código si toco el formulario o la base de datos:
| Código: | TComponent *Source;
Query->Close();
Query->UnPrepare();
if (lNuevo)
Query->SQL->Text = "INSERT INTO Socios (Socio, Usuario, Clave, M_alta, A_alta, Situacion, Email, Aviso, Apellidos, Nombre, Nif, Sexo, "
"Telefono, F_nacim, Domicilio, Cpostal, Poblacion, Provincia, F_pago, Entidad, Oficina, Digitos, Numero, F_renov) "
"VALUES (:Socio, :Usuario, :Clave, :M_alta, :A_alta, :Situacion, :Email, :Aviso, :Apellidos, :Nombre, :Nif, :Sexo, "
":Telefono, :F_nacim, :Domicilio, :Cpostal, :Poblacion, :Provincia, :F_pago, :Entidad, :Oficina, :Digitos, :Numero, :F_renov)";
else
Query->SQL->Text = "UPDATE Socios SET Clave = :Clave, M_alta = :M_alta, A_alta = :A_alta, Situacion = :Situacion, Email = :Email, "
"Aviso = :Aviso, Apellidos = :Apellidos, Nombre = :Nombre, Nif = :Nif, Sexo = :Sexo, Telefono = :Telefono, "
"F_nacim = :F_nacim, Domicilio = :Domicilio, Cpostal = :Cpostal, Poblacion = :Poblacion, Provincia = :Provincia, "
"F_pago = :F_pago, Entidad = :Entidad, Oficina = :Oficina, Digitos = :Digitos, Numero = :Numero, F_renov = :F_renov "
"WHERE Usuario = :Usuario";
for (nItem = 0; nItem <Query>ParamCount; nItem ++)
{
Source = fSocio->FindComponent(Query->Params->Items[nItem]->Name);
if (Source->ClassNameIs("TEdit"))
{
TEdit* Edit = static_cast<TEdit>(Source);
switch (Query->Params->Items[nItem]->DataType)
{
case ftInteger:
Query->Params->Items[nItem]->AsInteger = StrToInt(Edit->Text);
break;
case ftString:
Query->Paramas->Items[nItem]->AsString = Edit->Text;
break;
... etc.
}
}
if (Source->ClassNameIs("TListBox"))
... etc.
} |
El problema que me está surgiendo es que no ejecuta el código; no da error, pero no lo ejecuta, al menos bien. Vamos a ver el primer parámetro (Socio) es de tipo Integer y se captura en un TEdit; por lo tanto, al ejecutar la función debe entrar por el primer if. Hasta aquí bien: entra, construye el TEdit *Edit, encuentra el componente en el formulario (se llaman igual que los campos de la tabla)... y ya está. Luego no ejecuta el switch, y es que he comprobado que el DataType para todos los parámetros es 0, es decir: ftUnknow. ¿Alguna idea? _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|