Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   modificar una tabla filtrada (https://www.clubdelphi.com/foros/showthread.php?t=69391)

marcos_0586 14-08-2010 19:03:00

modificar una tabla filtrada
 
ante todo buenos dia, el motivo de este mensaje es para una vez mas pedir su ayuda, resulta que estoy trabajando con dos tablas la primera T_clientes y la segunda T_telcliente en donde T_telcliente puede guardar muchos telefonos del mismo cliente, el alta de clientes lo hice sin problemas, lo que no logro conseguir es modificar esos datos ya que cuanDo quiero buscarlos por medio de un Query ,me dice invalid field name este es my Query:
Código SQL [-]Query1.SQL.clear; Query1.SQL.Add('SELECT Numero from T_telcliente where Cod_cliente=DBedit1.text'); Query1.active:=true; Query1.open;




El campo que estoy buscando (Numero) es una clave secundaria,de la tabla T_telcliente.
despues intente hacerlo con un filter y me muestra los datos que nesecito pero no me deja editarlos por lo tanto esa opcion no me sirve

PD:utilizo un DBedit porque es el que hace la relacion con la tabla T_cliente para traer sus datos, despues tengo un DBgrid relacionado con el Query y un DBnavigator para poder modificar los datos del telefono del cliente

bueno espero que me puedan dar una ayudita con esto, y muchas gracias

Caral 14-08-2010 22:08:07

Hola
Da la impresion de que el campo Cod_Cliente es Numerico????.
El DBEdit es un componente NO un campo, por eso no puede estas en la sentencia sql como si lo fuera, para eso se necesita concatenar, trata asi:
Código Delphi [-]
Query1.SQL.Text:= 'SELECT Numero from T_telcliente where Cod_cliente= '+DBedit1.text; 
Query1.active:=true;

Lo demas, esta sobrando.
Saludos

marcos_0586 15-08-2010 14:45:51

Cita:

Empezado por Caral (Mensaje 373583)
Hola
Da la impresion de que el campo Cod_Cliente es Numerico????.
El DBEdit es un componente NO un campo, por eso no puede estas en la sentencia sql como si lo fuera, para eso se necesita concatenar, trata asi:
Código Delphi [-]Query1.SQL.Text:= 'SELECT Numero from T_telcliente where Cod_cliente= '+DBedit1.text; Query1.active:=true;


Lo demas, esta sobrando.
Saludos



gracias caral por la ayuda, lo he probado,con el DBedit y con un edit pero me aparece un mensaje:type mismatch in expression.
El campo Cod_Cliente es tipo string porque no son solo numeros tambien tiene guiones

Caral 15-08-2010 15:11:18

Hola
Me imagino que el dbedit tiene un query o table independiente del de esta sentencia.
Lo que dice el mensaje es que el tipo de dato no es correcto, lo que quiere decir que o no coincide o no lo encuentra pudiendo ser un null.
Saludos
PD: Que base de datos usas?

marcos_0586 15-08-2010 15:43:04

hola caral, si, el DBedit esta relacionado con la tabla T_clientes y es el resultado de una busqueda echa en la tabla T_cliente, con respecto al error estoy seguro que es la opcion de que el tipo de datos es incorrecto ya que el valor que estoy buscando existe porque lo hice yo mismo, creo que es por la forma de agregar el dbedit al query ya que el campo a buscar existe y el campo Cod_cliente es tipo texto y el campo dbedit tambien. seguire buscando la forma de solucionar esto, gracias

Caral 15-08-2010 20:35:32

Hola
Usa una variable y un parametro, tal vez ayude.
En el caso de los dbedit aveces molestan.
Saludos

marcos_0586 17-08-2010 21:08:24

hola, el problema es que estoy buscando un dato que no es clave primaria, por eso me dice ese error, ahora bien, alguien me podria dar un ejemplo de como asignarle el indice a un campo de la tabla? o como buscar por campos que no sean indices? probe con IndexName o con locate pero el locate es con indices tambien. Saludos

Caral 17-08-2010 21:22:40

Hola
A ver asi:
Código Delphi [-]
var Dato: String;
Begin
Dato:= DBEdit1.Text;
Query1.SQL.Text:= 'SELECT Numero from T_telcliente where Cod_cliente= :a'; 
Query1.Parameters[0].Value:= Dato;
Query1.active:=true;
Saludos
PD: Con que base de datos esta trabajando?

marcos_0586 17-08-2010 22:49:27

trabajo con database desktop que viene con delphi7 (las tablas las hice en paradox 7)
ahora me aparece:
[Error] Unit8.pas(129): Undeclared identifier: 'Parameters'
[Error] Unit8.pas(129): Missing operator or semicolon
a no se que hacer, dejo el codigo a ver si se puede hacer algo para poder terminar con esto
Código SQL [-]
 
procedure TForm8.Image1Click(Sender: TObject); var Dato: String; 
var Dato: String;
begin
if form1.table4.findkey([Edit3.Text])= true  then
begin 
     panel1.Visible:=true; 
    IF RadioButton1.Checked=true then  
    begin  
         Image2.Visible:=false;      
         Image3.Visible:=true;           
 DBLookupComboBox1.ReadOnly:=true;        
    DBEdit1.ReadOnly:=true;      
   DBEdit2.ReadOnly:=true;       
     DBEdit3.ReadOnly:=true;         
   dbgrid1.ReadOnly:=true;         
   Dato:= DBEdit1.Text;     
 Query1.SQL.Text:='SELECT Numero from T_telcliente where Cod_cliente=:a'; 
 Query1.Parameters[0].Value:= Dato;         
   Query1.active:=true;      
     end          
  else       
     begin       
          Image2.Visible:=true;    
             Image3.Visible:=false;               
  DBLookupComboBox1.ReadOnly:=false;         
        DBEdit1.ReadOnly:=false;         
        DBEdit2.ReadOnly:=false;          
       DBEdit3.ReadOnly:=false;     
            dbgrid1.ReadOnly:=false;   
         end;         
 end       
  else        
    begin       
        showmessage('no existe el dni buscado');   
            edit3.Text:='';   
         end;     
  edit3.Text:=''; 
end;

Caral 17-08-2010 23:02:08

Hola
El codigo es un poco lioso para entender lo que pretendes hacer.
La unica manera seria viendo el programa y tratar de correrlo.
De todos modos:
El error es simplemente por que no usa Parameters el query de la paleta BDE, lo que usa es Params.
Sigue con este a ver que errores te da:
Código Delphi [-]
procedure TForm1.Image1Click(Sender: TObject);
var Dato: String;
begin
if form1.table4.findkey([Edit3.Text])= true then
begin
panel1.Visible:=true;
IF RadioButton1.Checked=true then
begin
Image2.Visible:=false;
Image3.Visible:=true;
DBLookupComboBox1.ReadOnly:=true;
DBEdit1.ReadOnly:=true;
DBEdit2.ReadOnly:=true;
DBEdit3.ReadOnly:=true;
dbgrid1.ReadOnly:=true;
Dato:= DBEdit1.Text;
Query1.SQL.Text:='SELECT Numero from T_telcliente where Cod_cliente= :a';
Query1.Params[0].Value:= Dato;
Query1.active:=true;
end
else
begin
Image2.Visible:=true;
Image3.Visible:=false;
DBLookupComboBox1.ReadOnly:=false;
DBEdit1.ReadOnly:=false;
DBEdit2.ReadOnly:=false;
DBEdit3.ReadOnly:=false;
dbgrid1.ReadOnly:=false;
end;
end
else
begin
showmessage('no existe el dni buscado');
edit3.Text:='';
end;
edit3.Text:='';
end;
end;
Otra cosa que no entiendo es por que buscas la llave en el edit3 sin embargo buscas el dato en el dbedit1, no se que contienen.
Saludos

marcos_0586 17-08-2010 23:18:59

Muchas gracias caral me salvaste,esta vez si funciono, porfin podre seguir con mi proyecto gracias.
Lo del edit y dbedit es porque: al ingresar al form el edit y una imagen son los únicos componente visible luego de presionar sobre la imagen de buscar aparece un panel1 que contiene el dbedit y otros componentes, el cual aparece directamente con el dato que deseo mostrar, es decir en el edit se ingresa un dato y en el dbedit solo lo muestra para corroborar que sean correctos los demas datos.


La franja horaria es GMT +2. Ahora son las 10:34:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi