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 

no found parameter "nif"

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: no found parameter "nif" Responder citando

Hola:
Tengo hecha una consulta sql, y me produce el error not found parameter
en todos los campos, no encuentro el motivo. Aqui os pongo la consulta:
consulta->SQL->Clear();
consulta->SQL->Text = "insert into proveedor(nif,razon_social,cp,direccion,mail,localidad,provincia,telefono,telefono2,telefono3,fax,pago,banco,contacto)";
consulta->SQL->Text = "values(:nif,:razon,:cp,:direccion,:mail,:localidad,:provincia,:telefono,:telefono2,:telefono3,:fax,:pago,:banco,:contacto)";
consulta->Params->ParamByName("nif")->AsString = nif;
consulta->Params->ParamByName("razon")->AsString = razon;
consulta->Params->ParamByName("cp")->AsString = cp;
consulta->Params->ParamByName("direccion")->AsString = direccion;
consulta->Params->ParamByName("mail")->AsString = mail;
consulta->Params->ParamByName("localidad")->AsString = localidad;
consulta->Params->ParamByName("provincia")->AsString = provincia;
consulta->Params->ParamByName("telefono")->AsString = telefono;
consulta->Params->ParamByName("telefono2")->AsString = telefono2;
consulta->Params->ParamByName("telefono3")->AsString = telefono3;
consulta->Params->ParamByName("fax")->AsString = fax;
consulta->Params->ParamByName("contacto")->AsString = contacto;
consulta->Params->ParamByName("pago")->AsString = pago;
consulta->Params->ParamByName("banco")->AsString = banco;

try{
consulta->ExecSQL();
ShowMessage("Proveedor añadido correctamente");
}
catch(...)
{
ShowMessage("Error al crear nuevo proveedor");
}
He probado a ponerlo incluso en 1 sola linea, asi:
consulta->SQL->Text = "insert into proveedor(nif,razon_social,cp,direccion,mail,localidad,provincia,telefono,telefono2,telefono3,fax,pago,banco,contacto) values(:nif,:razon,:cp,:direccion,:mail,:localidad,:provincia,:telefono,:telefono2,:telefono3,:fax,:pago,:banco,:contacto)";

Y nada de nada, ¿Alguien sabe el motivo o que estoy haciendo mal??
Gracias de antemano
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

De entrada el primer código que has puesto es incorrecto. Tal como lo está puesto:
Código:
consulta->SQL->Text = "insert into proveedor(nif,razon_social,cp,direccion,mail,localidad,provincia,telefono,telefono2,telefono3,fax,pago,banco,contacto)";
consulta->SQL->Text = "values(:nif,:razon,:cp,:direccion,:mail,:localidad,:provincia,:telefono,:telefono2,:telefono3,:fax,:pago,:banco,:contacto)";

al ejecutarse el segundo SQL->Text en el query SÓLO tendrás ese trozo:
Cita:
values(:nif,:razon,:cp,:direccion,:mail,:localidad,:provincia,:telefono,:telefono2,:telefono3,:fax,:pago,:banco,:contacto)

Para hacerlo en dos líneas tienes que ponerlo así:
Código:
consulta->SQL->Text = "insert into proveedor(nif,razon_social,cp,direccion,mail,localidad,provincia,telefono,telefono2,telefono3,fax,pago,banco,contacto)";
consulta->SQL->Add("values(:nif,:razon,:cp,:direccion,:mail,:localidad,:provincia,:telefono,:telefono2,:telefono3,:fax,:pago,:banco,:contacto)");

Puedes ponerlo en una sola línea así:
Código:
consulta->SQL->Text = "insert into proveedor (nif,razon_social,cp,direccion,mail,localidad,provincia,telefono,telefono2,telefono3,fax,pago,banco,contacto) values (:nif,:razon,:cp,:direccion,:mail,:localidad,:provincia,:telefono,:telefono2,:telefono3,:fax,:pago,:banco,:contacto)");

(Personalmente, por motivos de claridad, antes de los paréntesis me gusta poner un espacio en blanco)

Fuera de esto, si todos los campos tiene la definición correcta (String, Integer, etc.) debe funcionarte bien.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Gracias Angel por tu respuesta. La verdad que no se porque no
funcionaba. simplemente la he copiado dentro del botón, y no me
da el error de parameter not found. Funciona correctamente. La
he vuelto a reescribir de 0 la funcion, y ha funcionado, con los mismos
datos. Algo hay que se me pasaria por alto. Muchas gracias por tu
respuesta Angel. Voy a poner como queda la función, por si alguien ve
la diferencia que lo diga. Esta función que posteo es la que funciona:
consulta->Close();
consulta->SQL->Clear();
consulta->SQL->Text = "insert into proveedor(nif,razon_social,cp,direccion,mail,localidad,provincia,telefono,telefono2,telefono3,fax,pago,banco,contacto) values(:fin,:rs,:pc,:street,:email,:locali,:provi,:tlf1,:tlf2,:tlf3,:xaf,:pay,:bank,:contact)";
consulta->Params->ParamByName("fin")->AsAnsiString = nif;
consulta->Params->ParamByName("rs")->AsAnsiString = razon;
consulta->Params->ParamByName("pc")->AsAnsiString = cp;
consulta->Params->ParamByName("street")->AsAnsiString = direccion;
consulta->Params->ParamByName("email")->AsAnsiString = mail;
consulta->Params->ParamByName("locali")->AsAnsiString = localidad;
consulta->Params->ParamByName("provi")->AsAnsiString = provincia;
consulta->Params->ParamByName("tlf1")->AsAnsiString = telefono;
consulta->Params->ParamByName("tlf2")->AsAnsiString = telefono2;
consulta->Params->ParamByName("tlf3")->AsAnsiString = telefono3;
consulta->Params->ParamByName("xaf")->AsAnsiString = fax;
consulta->Params->ParamByName("pay")->AsAnsiString = pago;
consulta->Params->ParamByName("bank")->AsAnsiString = banco;
consulta->Params->ParamByName("contact")->AsAnsiString = contacto;


try{
consulta->ExecSQL();
ShowMessage("Proveedor añadido correctamente");
}
catch(...)
{
ShowMessage("Error al crear nuevo proveedor");
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

[quote="jugado1820"Algo hay que se me pasaria por alto.[/quote]
Lo que se te pasó por alto es lo que te indicaba ayer:
Código:
consulta->SQL->Clear();
consulta->SQL->Text = "insert into proveedor(nif,razon_social,cp,direccion,mail,localidad,provincia,telefono,telefono2,telefono3,fax,pago,banco,contacto)";
consulta->SQL->Text = "values(:nif,:razon,:cp,:direccion,:mail,:localidad,:provincia,:telefono,:telefono2,:telefono3,:fax,:pago,:banco,:contacto)";

Tal como lo ponías, cuando terminas de ejecutar este código en SQL->Text tendrás SÓLO values(:nif,:razon,:cp,:direccion,:mail,:localidad,:provincia,:telefono,:telefono2,:telefono3,:fax,:pago,:banco,:contacto), por lo que el error viene de que no hay dónde aplicar esos parámetros.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
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.