"ADOQUERY3: Parameter 'p' not found" error (POR FAVOR AYUDA)
Estoy tratando de modificar una base en access y siempre me da este error"ADOQUERY3: Parameter 'p' not found" error
Cualquier ayuda la agradecercia enormemente...espero que me puedan dar una mano procedure TForm3.Modificar1Click(Sender: TObject); var cons1, cons2, cons3:string; begin if edit2.Text = edit9.Text then begin adoquery2.Close; adoquery2.SQL.Text:='select id from colaboradores where usuario= ::p'; adoquery2.Parameters.ParamByName('p').Value:=edit1.Text; adoquery2.Open; adoquery3.Close; //estos los comente porque me recomendaron usar .sql.add(blablabla) de ultima lo vuelvo a poner asi... //cons1:='select colaboradores.id, colaboradores.usuario, colaboradores.password, colaboradores.nombre, colaboradores.apellido, colaboradores.direccion, colaboradores.telefono, colaboradores.email, colaboradores.web, colaboradores.rol, colaboradores.fecha '; //cons2:='from colaboradores, roles '; //cons3:='where colaboradores.rol=roles.id and colaboradores.id= ::p'; adoquery3.SQL.Add('select colaboradores.id, colaboradores.usuario, colaboradores.password, colaboradores.nombre, colaboradores.apellido, colaboradores.direccion, colaboradores.telefono, colaboradores.email, colaboradores.web, colaboradores.rol, colaboradores.fecha '); adoquery3.SQL.Add('from colaboradores, roles '); adoquery3.SQL.Add('where colaboradores.rol=roles.id and colaboradores.id= ::p') ; adoquery3.SQl.Text:=adoquery3.Parameters.ParseSQL(adoquery3.SQL.Text,true); //adoquery3.SQL.Text:=cons1+cons2+cons3; //adoquery3.Parameters.ParseSQL(adoquery3.SQL.Text,true); adoquery3.Parameters.ParamByName('p').Value:=adoquery2.Fields[0].AsInteger; //aca se da el error que no encuentra el parametro!!!!!!!! //si adoquery2.fields[0]. lo pongo como asString pasa lo mismo...ademas el error seria distinto me imagino //puse ::p porque el foro no me permite imagenes pero es con un solo ":" adoquery3.Open; adoquery3.Edit; adoquery3.Fields[1].AsString:=edit1.Text; adoquery3.Fields[2].AsString:=edit2.Text; adoquery3.Fields[3].AsString:=edit3.Text; adoquery3.Fields[4].AsString:=edit4.Text; adoquery3.Fields[5].AsString:=edit5.Text; adoquery3.Fields[6].AsString:=edit6.Text; adoquery3.Fields[7].AsString:=edit7.Text; adoquery3.Fields[8].AsString:=edit8.Text; //averiguo el rol adoquery4.Close; adoquery4.SQL.Text:='select id from roles where rol= ::p'; adoquery4.Parameters.ParamByName('p').Value:=combobox1.Text ; adoquery4.Open; adoquery3.Fields[9].AsInteger:=adoquery4.Fields[10].AsInteger; adoquery3.Fields[10].AsString:=edit10.Text; adoquery3.Post; showmessage('Registro modificado exitosamente!'); adoquery3.Close; end else showmessage('Las Contraseñas no fueron confirmadas correctamente, deben ser iguales'); end; |
Hola
Esta es la parte que da el error? Saludos |
Si
exacto, el ":p" (quiero decir :[letra p] no aparece porque lo trunca el foro
adoquery3.SQL.Add('select colaboradores.id, colaboradores.usuario, colaboradores.password, colaboradores.nombre, colaboradores.apellido, colaboradores.direccion, colaboradores.telefono, colaboradores.email, colaboradores.web, colaboradores.rol, colaboradores.fecha '); adoquery3.SQL.Add('from colaboradores, roles '); adoquery3.SQL.Add('where colaboradores.rol=roles.id and colaboradores.id= :') ; adoquery3.SQl.Text:=adoquery3.Parameters.ParseSQL(adoquery3.SQL.Text,true); //adoquery3.SQL.Text:=cons1+cons2+cons3; //adoquery3.Parameters.ParseSQL(adoquery3.SQL.Text,true); adoquery3.Parameters.ParamByName('p').Value:=adoquery2.Fields[0].AsInteger; |
ademas
el parse lo comente porque tiraba list bound out of index
|
Hola
Disculpa, para tratar de entender, que quieres hacer en esta linea, que es la que pretendes? Saludos |
mentira
el parse lo comente por error...por favor me das una mano?...
|
Hola
A ver: Saludos |
era una sugerencia que encontre
en el foro de embarcadero...
|
pero
si esa linea no esta...el error sigue dandose
|
Hola
Estamos en lo mismo?. As probado el ultimo codigo que puse?. Saludos |
Ahora da
List Index Out Of Bounds (10)
despues probe cambiar un poco tu codigo y recibo el mismo error adoquery3.SQL.Add('select colaboradores.id, colaboradores.usuario, colaboradores.password, colaboradores.nombre,colaboradores.apellido, colaboradores.direccion, colaboradores.telefono, colaboradores.email, colaboradores.web,colaboradores.rol, colaboradores.fecha '); adoquery3.SQL.Add('from colaboradores, roles '); adoquery3.SQL.Add('where colaboradores.rol=roles.id and colaboradores.id= :A'); adoquery3.Parameters.ParamByName('A').Value:= adoquery2.Fields[0].AsInteger; |
quiero decir
recibo como error List Index Out Of Bounds (10)
|
Hola
Lo que se me ocurre es que el adoquery2 no este open; Saludos |
Verificado
begin
if edit2.Text = edit9.Text then begin adoquery2.Close; adoquery2.SQL.Text:='select id from colaboradores where usuario= :f'; adoquery2.Parameters.ParamByName('f').Value:=edit1.Text; adoquery2.Open; alguna otra idea...? |
Te doy mil gracias
El error estaba en:
adoquery4.Close; adoquery4.SQL.Text:='select id from roles where rol= :w'; adoquery4.Parameters.ParamByName('w').Value:=combobox1.Text ; adoquery4.Open; adoquery3.Fields[9].AsInteger:=adoquery4.Fields[10].AsInteger; No podia ser adoquery4.Fields[10].AsInteger; Ya que el adoquery4 solo retorna Fields[0].asinteger... Ahora para que te de 1 millon de gracias ;-) Mira lo que me pasa... En la primer iteracion corre bien y modifica todo En la segunda modificacion (cuando cambio otro registro) da error "Objeto Parameter mal definido. Se proporciono informacion incompleta o incoherente" adoquery4.Close; adoquery4.SQL.Text:='select id from roles where rol=:f'; adoquery4.Parameters.ParamByName('f').Value:=combobox1.Text ; adoquery4.Open; adoquery3.Fields[9].AsInteger:=adoquery4.Fields[0].AsInteger ; adoquery4.Close; adoquery3.Fields[10].AsString:=edit10.Text; adoquery3.Post; showmessage('Registro modificado exitosamente!'); adoquery3.Close; Como veras tomé la precaución de cerrar el qry4.close Espero ideas y no te molesto mas! |
Hola
Puedes colocar el codigo completo para verlo?. Usa las etiquetas delphi, encierras el codigo entre : [DELPHI ]aqui [ /DELPHI] En el centro de estos pones el codigo. Que base de datos usas?. Saludos PD: Si presionas avanzado veras un boton al lado del de sql, es el que pone las etiquetas. |
re
Uso Access
|
Hola
A ver esto: Saludos |
mismo error
che te agradezco la buena onda...
|
Hola
Creo entender que la primera vez modifica y hace todo bien, pero la segunda vez que tratas de modificar da el error. Si es asi es por el uso de ADD en el query3 ya que no se limpia la consulta, por eso me gusta usar mas text. Veamos esta vez a ver que pasa: Si no sale, coloca aqui el programa completo con la base de datos, en un zip, sin el exe y lo reviso. Saludos |
La franja horaria es GMT +2. Ahora son las 08:49:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi