Duda sobre base de datos .dbf

Tengo un gran problema con el manejo de query's, ya que en mi código 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.

1 respuesta

Respuesta
1
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.
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
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.
Hola: Que crees esta fregadera no se deja,
1. El alias esta bien configurado, esta como tipo FoxPro ya que la BD es con extensión "dbf". Y con sentencias simples si jala, pero con parámetros 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.
Gracias antipauli, pero no se puede mezclar un tipo texto con un entero.
Te agradezco pero no sale así, porque ya lo intente, de hecho si utilizo un campo que se llama hsimbolo que es tipo char, ese si se ejecuta.
Agradezco tu atención.
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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas