Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-05-2004
redlyon13 redlyon13 is offline
Miembro
 
Registrado: nov 2003
Ubicación: Manzanillo, Colima, Mexico
Posts: 17
Poder: 0
redlyon13 Va por buen camino
error en parametros con ado

que tal amigos, estoy realizando una consulta en la que uso un adoquery y le paso parametros el codigo es el siguiente

adoquery1.Parameters.ParamByName('oc-cve').Value := edit1.Text ;
adoquery1.SQL.Text:= 'select us-cve from ordcom where oc-cve = c-cve';
adoquery1.ExecSQL;

pero a la hora de ejecutar la aplicacion me marca "no value given for one or more required parameters" podrian orientarme acerca de donde estoy mal ?

otra pregunta
como puedo pasar el resultado a una etiqueta
se puede hacer lo siguiente

label1.text := adoquery1.SQL.Text:= 'select us-cve from ordcom where oc-cve = c-cve';

soy novato asi que si mi pregunta es muy tonta disculpen pero voy empezando y si uds me ayudan podre apender.
de antemano les agradezco por su atencion
Responder Con Cita
  #2  
Antiguo 23-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

El problema es que es al asignar la sentencia SQL que se "crean" los parámetros; por lo que el valor recien asignado simplemente se pierde.

Además, cuando asignas un select a una sentencia SQL, el TAdoQuery debes "abrirlo" con el método open, y no simplemente "ejecutarlo" con ExecSQL, con el que ejecutas sentencias que no devuelven un cursor, como un update o un delete.

Para obtener el "resultado", te podes valer del método FieldByName.

Al final el trozo de código quedaria algo asi:

Código Delphi [-]
  adoquery1.SQL.Text:= 'select us-cve from ordcom where oc-cve = c-cve';
  adoquery1.Parameters.ParamByName('oc-cve').Value := edit1.Text ;
  adoquery1.Open;
  label1.text := adoquery1.fieldbyname('oc-cve').AsString;

Por cierto, te recomiendo el uso de las etiquetas [ code ] [ delphi ] y [ sql ] para publicar trozos de código, que ves que de esta forma se indentan correctamente y hasta se puede resaltar la sintaxis, lo que los hace mucho mas legibles. Hay un mensaje al inicio de cada foro que te aclarará bastante sobre su uso.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 23-05-2004
redlyon13 redlyon13 is offline
Miembro
 
Registrado: nov 2003
Ubicación: Manzanillo, Colima, Mexico
Posts: 17
Poder: 0
redlyon13 Va por buen camino
Question

como esta eso de que se pierden los valores del parametro no te lo entendi muy bien, otra preguntonta, el parametro lo tengo que definir en algun lugar en especial o lo puedo agregar por ejemplo en el evento onclick de un boton ?
Responder Con Cita
  #4  
Antiguo 23-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por redlyon13
como esta eso de que se pierden los valores del parametro no te lo entendi muy bien
Que al momento de asignar la sentencia SQL, ADO borra los parámetros del componente (si es que los tiene) y genera una lista totalmente nueva basado en la sentencia recien recibida. Esto provoca que el valor asignado al parámetro se pierda...

Por eso basta cn cambiar el orden...

Cita:
Empezado por redlyon13
el parametro lo tengo que definir en algun lugar en especial o lo puedo agregar por ejemplo en el evento onclick de un boton ?
esto si que no lo entendí...

El parámetro lo podes definir en tiempo de diseño o ejecución sin problemas. Por ejemplo, podes introducir una sentencia SQL con nuevos parámetros... siempre que tengas un mecanismo igualmente dinámico para asignar un valor a ellos antes de ejecutar la sentencia o abrir un cursor.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 23-05-2004
redlyon13 redlyon13 is offline
Miembro
 
Registrado: nov 2003
Ubicación: Manzanillo, Colima, Mexico
Posts: 17
Poder: 0
redlyon13 Va por buen camino
Question

escribi el codigo en el orden que me comentas pero aun asi me sigue marcando el mismo error.
como le asigno el valor del campo de texto a este parametro que defini ?
Responder Con Cita
  #6  
Antiguo 23-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Probablemente el error está en un parámetro de la conexión ADO entonces. Has intentado ejecutar un query sin parámetros???
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 23-05-2004
redlyon13 redlyon13 is offline
Miembro
 
Registrado: nov 2003
Ubicación: Manzanillo, Colima, Mexico
Posts: 17
Poder: 0
redlyon13 Va por buen camino
ejecuto el query sin parametros y funciona,
mira lo que quiero hacer es capturar en un cuadro de texto un numero de orden de compra y al presionar un boton me aparezcan todos los datos de esta orden por eso pensaba realizarla con parametros, la tabla se llama ordcom, el campo es [I]oc-cve[/i], tu como consultarias este dato en la bd ?
Responder Con Cita
  #8  
Antiguo 23-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Pues en principio está bien como vos lo estas haciendo. Con una sentencia del tipo

adoquery1.ParamByName('talcosa').AsString := 'hola';

Le estas asignando el valor 'hola' al parámetro, y con Open, como ya te explique antes, lo abris...

Intentá asignar el valor del parámetro en tiempo de diseño y ver si asi es posible. Otra posibilidad que se me ocurre, es que el parámetro no soporte el uso del guion menor, pues este en sql normalmente significa una resta... ya ves, es el signo menos.

Mejor usa un nombre de parámetro con guion mayor (_) o sin guiones.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 23-05-2004
redlyon13 redlyon13 is offline
Miembro
 
Registrado: nov 2003
Ubicación: Manzanillo, Colima, Mexico
Posts: 17
Poder: 0
redlyon13 Va por buen camino
fijate que ahora me marca "syntax error in query expresion select 'ORDCOM where oc-cve = ?' al parecer este es el valor que pasa el parametro.
Responder Con Cita
  #10  
Antiguo 23-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Te recomiendo escribir el query con comillas dobles. No se como se lo tome MS-SQL, pero creo que cualquier motor interpretará el Select oc-cve como la resta del campo oc menos el campo cve. Si el campo se llama oc-cve, escribilo entre comillas dobles (que debiera ser lo estándar, pero mejor lee la documentación de tu motor).

Algo como:

Código SQL [-]
  Select "uc-cve" from ordcom where "oc-cve" = ccve;

Luego el parámetro se llamaria occve.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 24-05-2004
redlyon13 redlyon13 is offline
Miembro
 
Registrado: nov 2003
Ubicación: Manzanillo, Colima, Mexico
Posts: 17
Poder: 0
redlyon13 Va por buen camino
Talking

muchas gracias, tenias razon era por que estaba usando el guion medio , ya lo cambie por guion bajo y si funciono,tanto por ta pequeña cosa jejeje, muchas gracias por tu ayuda
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:10:27.


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
Copyright 1996-2007 Club Delphi