PDA

Ver la Versión Completa : Consulta usando query en delphi 7


Yensis22
24-08-2008, 23:20:12
estoy creado una aplicacion en la cual estoy teniendo problema con una consulta mi base de datos esta es acces y estoy los siguiente componente usando datamodule, database y query para relizar las consulta que es con los que estoy teniendo problema yo puedo ver y almacena los datos y tengo tos esto componten enlasado pero con las con sulta me esta tirando este erorror. Proyect facturacion.exe raised exception class EDBEningError with messanger "General SQL error. Process stopped. Use Step or Run to continue

y este es el codigo que tengo el cual se que esta bueno por que funciona bien en paradox pero nose si hay que cambiar algo para usalo en acess

codigo en DELPHI 7 lo que esta en azul en codigo es donde marca el error cundo se para la ejecucion

unit FConsuEquip;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls;
type
TFConstaEquipos = class(TForm)
Bevel2: TBevel;
Codequipo: TEdit;
Busqueda: TComboBox;
cBuscar: TBitBtn;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn4: TBitBtn;
DBGrid1: TDBGrid;
procedure cBuscarClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FConstaEquipos: TFConstaEquipos;
implementation
uses login;
{$R *.dfm}
procedure TFConstaEquipos.cBuscarClick(Sender: TObject);
begin

if Busqueda.ITemIndex = 0 then Begin
if length(trim(Codequipo.Text)) = 0 then Begin
ShowMessage('Tiene que Especificar un valor para inicial la Consulta');
exit;
End;
Codequipo.Text := trim(Codequipo.Text);
ConexionDB.QEquipos.Active := False;
ConexionDB.QEquipos.SQL.Clear;
ConexionDB.QEquipos.SQL.Add('select * from equipos where upper(placa) like ''%' + UpperCase(Codequipo.Text) + '%'' ');
ConexionDB.QEquipos.Active := True;
if ConexionDB.QEquipos.Eof then ShowMessage('Lo siento no se encuentra ningun Registros');
End;
if Busqueda.ITemIndex = 1 then Begin
if length(trim(Codequipo.Text)) = 0 then Begin
ShowMessage('Tiene que Especificar un valor para inicial la Consulta');
exit;
End;
Codequipo.Text := trim(Codequipo.Text);
ConexionDB.QEquipos.Active := False;
ConexionDB.QEquipos.SQL.Clear;
ConexionDB.QEquipos.SQL.Add('select * from equipos where upper(modelo) like ''%' + UpperCase(Codequipo.Text) + '%'' ');
ConexionDB.QEquipos.Active := True;
if ConexionDB.QEquipos.Eof then ShowMessage('Lo siento no se encuentra ningun Registros');
End;
if Busqueda.ITemIndex = 2 then Begin
if length(trim(Codequipo.Text)) = 0 then Begin
ShowMessage('Tiene que Especificar un valor para inicial la Consulta');
exit;
End;
Codequipo.Text := trim(Codequipo.Text);
ConexionDB.QEquipos.Active := False;
ConexionDB.QEquipos.SQL.Clear;
ConexionDB.QEquipos.SQL.Add('select * from equipos where upper(marca) like ''%' + UpperCase(Codequipo.Text) + '%'' ');
ConexionDB.QEquipos.Active := True;
if ConexionDB.QEquipos.Eof then ShowMessage('Lo siento no se encuentra ningun Registros');
End;
if Busqueda.ITemIndex = 3 then Begin
if length(trim(Codequipo.Text)) = 0 then Begin
ShowMessage('Tiene que Especificar un valor para inicial la Consulta');
exit;
End;
Codequipo.Text := trim(Codequipo.Text);
ConexionDB.QEquipos.Active := False;
ConexionDB.QEquipos.SQL.Clear;
ConexionDB.QEquipos.SQL.Add('select * from equipos where upper(Año) like ''%' + UpperCase(Codequipo.Text) + '%'' ');
ConexionDB.QEquipos.Active := True;
if ConexionDB.QEquipos.Eof then ShowMessage('Lo siento no se encuentra ningun Registros');
End;
if Busqueda.ITemIndex = 4 then Begin
if length(trim(Codequipo.Text)) = 0 then Begin
ShowMessage('Tiene que Especificar un valor para inicial la Consulta');
exit;
End;
Codequipo.Text := trim(Codequipo.Text);
ConexionDB.QEquipos.Active := False;
ConexionDB.QEquipos.SQL.Clear;
ConexionDB.QEquipos.SQL.Add('select * from equipos where upper(ficha) like ''%' + UpperCase(Codequipo.Text) + '%'' ');
ConexionDB.QEquipos.Active := True;
if ConexionDB.QEquipos.Eof then ShowMessage('Lo siento no se encuentra ningun Registros');
End;
end;

procedure TFConstaEquipos.BitBtn1Click(Sender: TObject);
begin
RepConequipos.preview();
end;
procedure TFConstaEquipos.BitBtn2Click(Sender: TObject);
begin
RepConequipos.print();();
end;
end.

Yensis22
24-08-2008, 23:29:20
Disculpeme este es el verdadero error que me esta dando Proyect facturacion.exe raised exception class EDBEningError with messanger "General SQL error.(microsft)(contolador OBDC Microft Access) la Funcion UPPER no esta definidad en la expresion Process stopped. Use Step or Run to continue.

povar ayuden

Caral
24-08-2008, 23:33:05
Hola
Me parece que esta diciendo que la funcion upper no esta definida.
Es probable que no funcione esta funcion con access.
1- quitaria esta funcion.
2- cambiaria de bde a ado, asi no usaria el odbc.
Saludos

Caro
25-08-2008, 04:39:43
Hola Yensis22, como te dice el mensaje de error la función UPPER no esta definido en access, pero si tiene la funciones UCase y LCase equivalente al UPPER y LOWER. Ahora creo recordar que el operador del like en access no es el % sino el *. Y como te dice el amigo Caral sería mucho mejor que utilizaras ADO en vez de BDE.

Saluditos

Yensis22
25-08-2008, 07:03:05
Gracias por su gran ayuda me funcion perfetamente con ucasa y no tube que cambiar los signo de % me esta funcionando de mil marabillas gracias y que diso les des vida y salud