Hay 2 detalles que espero hayas corregido:
Código Delphi
[-]
qryCliente.SQL.Add('WHERE telefono1_cliente: Codigo');
Falta el símbolo de comparación, como ya te dijo
nemesio, debe decir:
Código Delphi
[-]qryCliente.SQL.Add('WHERE telefono1_cliente = :Codigo');
El otro detalle es darle valor al parámetro antes de abrir la consulta:
Código Delphi
[-]qryCliente.Parameters.ParamByName('Codigo').AsInteger :=StrToInt(MaskEdit1.Text);
qryCliente.Open;
if not qryCliente.IsEmpty then
DBText1.Caption:=qryClientenombre_cliente.Value+' '+qryClienteapellidos_cliente.Value;
end;
end;
Cuando pones ":Loquesea" estas indicando al SQL que lo que hay detras de los dos puntos es un parámetro, es decir, algo variable en la ejecución de esa SQL. Normalmente se hace un Query1.Prepare antes de abrir la consulta, así se agiliza y queda compilada esa consulta en el servidor; cuando posteriormente se llame a esa consulta con otro valor en el parámetro, la consulta ya se encuentra compilada y lista para ejecutarla, tardando menos en su ejecución.
Al menos esto funciona así en SGBD como Firebird / Interbase, etc, no sé que tal irá en Access.
Es importante que digas de qué clase es el parámetro:
Código Delphi
[-]qryCliente.Parameters.ParamByName('Codigo').AsInteger :=strToInt(MaskEdit1.Text);
Porque así Delphi lo traduce de forma correcta:
AsString - Delphi añade las comillas
AsInteger - Delphi lo pasa tal cual
AsDateTime - Delphi traduce el formato de fecha que espera el motor.
Según han comentado en otros mensajes sobre ACCESS, debes usar la propiedad Params del TQuery y especificar de qué tipo es el parámetro, obviamente es un parámetro de entrada pInput, si es de tipo String, etc.
Un detalle más. Ten cuidado al darle nombre al parámetro, porque si tienes un campo que se llama "Codigo" en tu tabla, puede que se haga un lio el Tquery, realmente no lo he probado, porque yo siempre le añado a los Parámetros el prefijo "pr"
Código Delphi
[-] qryCliente.SQL.Add(' SELECT telefono1_cliente, nombre_cliente, apellido_cliente FROM tbClientes ');
qryCliente.SQL.Add('WHERE telefono1_cliente = : prCodigo');
Así nunca hay dudas.
Saludos