Delphi - consulta en campo de tpo testo, acces y paradox

 
Vista:

consulta en campo de tpo testo, acces y paradox

Publicado por ana (2 intervenciones) el 25/06/2007 21:40:20
hola, genero una cosulta para un campo de tipo texto(acces) y alpha(paradox) de la siguente manera:

paradox(Database desktop)
query1.sql.add('SELECT NOM FROM TABLA1 WHERE NOM="ROSA"');

acces
query1.sql.add('SELECT NOM FROM BD WHERE NOM="ROSA"');

En la primera funciona muy bien, el problema es en la segunda (acces), me mada el siguente error:

"pocos parametros. Se espereba 1.'. process stopped. use step or run to continued"

creo que el problema es la sintaxis para cada manejador, pero no se como espresar esto, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta en campo de tpo testo, acces y paradox

Publicado por Dr Juzam (821 intervenciones) el 26/06/2007 03:14:44
si no me equivoco, así valdría:

query1.sql.add ('Select NOM from BD where NOM=:Parametro1');
query1.parameters[0].value:='ROSA';

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta en campo de tpo testo, acces y paradox

Publicado por juancho (193 intervenciones) el 26/06/2007 12:49:50
Si usas el mismo componente para hacer dos consultas debes de invocar al procedimiento:
query1.Params.Clear;
y tambien a:
query1.sql.Clear;
El componente no borra ni las cadenas de SQL ni los Params declarados con anterioridad, es por eso que te pide otro parametro, aun tiene el otro parametro en la lista Params mas el nuevo parametro, y debes de declarar los parametrios nuevos en la lista, al menos si lo vas a hacer por codigo.
Espero que te ayude.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta en campo de tpo testo, acces y paradox

Publicado por ana (2 intervenciones) el 26/06/2007 18:33:30
Sigo batallando un poquito espero no sea muy insistente chicos: este es mi codigo completo:

query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from tabla1 where nom="ROSA"');
query1.Open;
dbgrid1.Refresh;

como veran uso el close y clear para eliminar contenidos de consultas pasadas, mi duda es porque cuando trabajo con tablas de paradox (desde el database desktop) este codigo funciona sin ningun error pero cuando trabajo con tablas de access (mediante ODBC) me manda el error ya especificado(que se esperava algo o algo de parametros).

Por cierto trate de usar el codigo de Dr Juzam y me manda el error que no se reconoce a parameters, asi que estube intentando y funciono asi:
query1.sql.add ('Select NOM from tabla1 where NOM=:0');
query1.params[0].Value:='ROSA';

epero me ayuden estoy un poco frustrada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta en campo de tpo testo, acces y paradox

Publicado por juancho (193 intervenciones) el 26/06/2007 19:03:01
Prueba con este codigo(Pero con tus componentes):
SQLConnection1.Open;
//Supon que es la segunda consulta
with SQLQuery1 do
begin
SQLConnection := SQLConnection1;
SQL.Clear;
//Si hay parametros nuevos esto es obligatorio, sino el componente tendra registrado el
//parametro anteriormente definido en tiempo de diseño, probablemente es este tu problema
Params.Clear;
//Debes de crear los parametros en tiempo de ejecucion si vas a cambiar la consulta y esta tiene
//otros parametros
Params.CreateParam(ftInteger, 'IDVALUE', ptInput);
//Reemplasalo por tu tabla
SQL.Add('SELECT IDPERSONA FROM PERSONA WHERE IDPERSONA = :IDVALUE');
//Le asignas el valor
Params.ParamByName('IDVALUE').AsInteger := 1;
Open;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta en campo de tpo testo, acces y paradox

Publicado por BigLuis (713 intervenciones) el 26/06/2007 19:03:12
Al Dr. se le olvido decirte que parameters e propio del TADODataset u otro componente ADO, no del TQuery.

Asi te tiene que funcionar (con el TADODataset) porque a mi me funciona y no tengo nada especial instalado, pero vete pensando en pasar de Paradox y Access (es solo un consejo) e ir acercandote a MySQL o Firebird (ambas gratuitas).

Query1.Parameters.ParamByName('parametro').Value:=Variable;
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta en campo de tpo testo, acces y paradox

Publicado por Dr Juzam (821 intervenciones) el 26/06/2007 21:49:27
Mea culpa :-)
¡Access me ha ablandado el cerebro!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar