Inicio > Delphi > antipauli > Duda sobre base de datos .dbf

Duda sobre base de datos .dbf

Experto:
Usuario:
Fecha: 08/07/2003
Valoración: (3,00 sobre 5) Categoría: Delphi
03/07/2003
javiercuaco, usuario preguntando en Delphi
Usuario
Hola:
Tengo un gran problema con el manejo de query's, ya que en mi codigo de sql
le pongo:
qrybusca.Close;
qrybusca.SQL.Clear;
qrybusca.sql.add('SELECT * FROM perfiles');
qrybusca.sql.add('WHERE identifi LIKE :pozo');
qrybusca.Params[0].AsString:= edit1.text + '%';
qrybusca.ExecSQL;

Cuando lo ejecuto mi programa, me manda un error de " Type Mismatch ", el campo identifi de la BD esta declarado como Number, ya intente de todo y nada. Me sigue mandando ese error.

P.D. Agradezco de antemano su ayuda.
03/07/2003
javiercuaco, experto respondiendo en Delphi
Experto
Prueba a hacer un qrybusca.Open; en lugar de qrybusca.ExecSQL;.
qrybusca.ExecSQL se ejecuta para los update, insert y delete principalmente.
Otra opción: utilizar qrybusca.Parambyname('pozo').AsString:= edit1.text + '%'; definiendo en diseño la consulta y en la property params diciéndole que el parámetro pozo es de tipo input y string.

Saludos,
Antipauli
04/07/2003
javiercuaco, usuario preguntando en Delphi
Usuario
Hola:
Fijate que no se pudo, me sigue enviando el mensaje de error siguiente: project project1.exe raised exception class EDBEngineError with message
'Type mismatch in expresion .'.
Process stopped.

lo intente de las dos formas que me dijiste y nada. No se si sea porque el tipo en la BD esta declarado como number. Aunque ya lo intente cambiando el string por un integer y nada.

P.D. ojala me puedas seguir ayudando
07/07/2003
javiercuaco, experto respondiendo en Delphi
Experto
A ver, vamos a ver si todo lo tenemos correcto.
1. Comprueba que el alias esté correctamente configurado, esté seleccionado en la property databasename de la query y funcione con sentencias simples (supongo que ya funcionaba).
2. Comprueba que el campo identifi sea de tipo string.
3. En diseño, en la property SQL de la query introcude la SQL paramétrica: SELECT * FROM perfiles WHERE identifi LIKE :pozo
4. En la property params, define el parámetro pozo como input (de entrada) y de tipo string.
5. En el procedimiento de llamada pon:
qrybusca.Close;
qrybusca.Parambyname('pozo').AsString := edit1.text + '%';
try
qrybusca.Open;
except
on e:exception do
showmessage(e.message);
end;

Llama al procedimiento y dime qué tal. Seguro que es una chorrada.

Saludos,
Antipauli
07/07/2003
javiercuaco, usuario preguntando en Delphi
Usuario
Hola: Que crees esta fregadera no se deja,
1. El alias esta bien configurado, esta como tipo FoxPro ya que la BD es con extension "dbf". Y con sentencias simples si jala, pero con parametros no.
2. El campo identifi es de tipo Number

Ya lo intente como dijiste, y tampoco funciona. Si necesitas la BD, solo dame tu correo y te lamando para que pruebes, gracias.
07/07/2003
javiercuaco, experto respondiendo en Delphi
Experto
Si el campo es de tipo Number claro que te decía Type Mismatch ya que tú le intentabas hacer un casting de string.
1.En la property params, define el parámetro pozo como input (de entrada) y de tipo integer.
2.En el procedimiento de llamada pon:
qrybusca.Close;
qrybusca.Parambyname('pozo').AsInteger := edit1.text + '%';
try
qrybusca.Open;
except
on e:exception do
showmessage(e.message);
end;

Y tiene que funcionar.

Saludos,
Antipauli
07/07/2003
javiercuaco, usuario preguntando en Delphi
Usuario
Gracias antipauli, pero no se puede mezclar un tipo texto con un entero.
Te agradezco pero no sale asi, porque ya lo intente, de hecho si utilizo un campo que se llama hsimbolo que es tipo char, ese si se ejecuta.
Agradezco tu atencion.
08/07/2003
javiercuaco, usuario preguntando en Delphi
Usuario
Gracias por todo.
Más opciones
Enlaces patrocinados