Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: Duda sobre base de datos .dbf
Experto: antipauli
Valoración: 3
Fecha: 03/07/2003


Duda sobre base de datos .dbf
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.

Re: Duda sobre base de datos .dbf
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

Duda sobre base de datos .dbf
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

Re: Duda sobre base de datos .dbf
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

Duda sobre base de datos .dbf
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.

Re: Duda sobre base de datos .dbf
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

Duda sobre base de datos .dbf
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.

Pregunta finalizada. Valoración: 3.
Gracias por todo.


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/delphi/respuestas/557754/duda-sobre-base-de-datos-dbf