Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-08-2010
marcos_0586 marcos_0586 is offline
Miembro
 
Registrado: jul 2010
Posts: 28
Poder: 0
marcos_0586 Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 14-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 15-08-2010
marcos_0586 marcos_0586 is offline
Miembro
 
Registrado: jul 2010
Posts: 28
Poder: 0
marcos_0586 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
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
Responder Con Cita
  #4  
Antiguo 15-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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?
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 15-08-2010
marcos_0586 marcos_0586 is offline
Miembro
 
Registrado: jul 2010
Posts: 28
Poder: 0
marcos_0586 Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 15-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Usa una variable y un parametro, tal vez ayude.
En el caso de los dbedit aveces molestan.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 17-08-2010
marcos_0586 marcos_0586 is offline
Miembro
 
Registrado: jul 2010
Posts: 28
Poder: 0
marcos_0586 Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 17-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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?
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 17-08-2010
marcos_0586 marcos_0586 is offline
Miembro
 
Registrado: jul 2010
Posts: 28
Poder: 0
marcos_0586 Va por buen camino
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;

Última edición por marcos_0586 fecha: 17-08-2010 a las 22:59:22.
Responder Con Cita
  #10  
Antiguo 17-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 17-08-2010
marcos_0586 marcos_0586 is offline
Miembro
 
Registrado: jul 2010
Posts: 28
Poder: 0
marcos_0586 Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta filtrada ecfisa Firebird e Interbase 6 11-02-2010 20:26:52
Busqueda en Tabla Filtrada don malo Conexión con bases de datos 9 04-07-2007 20:54:53
DBChart, Tabla filtrada ? Fabricio Gráficos 9 14-03-2007 15:30:44
Tabla a excel modificar y guardar en la tabla jgutti Servers 1 06-09-2004 16:20:49
Conflicto entre Query y Tabla filtrada Michael Varios 2 20-05-2004 21:37:43


La franja horaria es GMT +2. Ahora son las 01:43:22.


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
Copyright 1996-2007 Club Delphi