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 10-09-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
Exclamation Combobox, Tablas, Códigos duplicados

salu2 amigos foristas.-

tengo un formulario el cual se llena mediante un combobox que carga los código (campo de tabla paradox 7), y cuando selecciono 1 se carga la informacion correspondiente, bien el problema surge cuando tengo 2 códigos iguales en la tabla pero de diferente hora.... facilito el código para mayor entendimiento de mi caso.

Código Delphi [-]
procedure TForm17.ComboBox1Change(Sender: TObject);
begin
if form1.Table7.Locate('cod_prov',ComboBox1.Text,[])  and form1.Table7.Locate('hor_pla',ComboBox1.,[]) then
  begin
    edit1.Text:=form1.Table7.FieldValues['nom_prov'];
    edit2.Text:=form1.Table7.FieldValues['observacion'];
    edit4.Text:=form1.Table7.FieldValues['hor_pla'];
    edit3.Text:=form1.Table7.FieldValues['gro_pla'];
    SpinEdit1.MaxValue:=form1.Table7.FieldValues['can1'];
    edit5.Text:=form1.Table7.FieldValues['can2'];
    BitBtn1.Enabled:=true;
    BitBtn7.Enabled:=true;
    BitBtn8.Enabled:=true;
  end
  else
  begin
    Application.MessageBox('Erro Grave','');
    exit;
  end;
end;

ok como vemos al elegir un item del combobox se carga correctamente la ifnormacion de x registro, pero cuando hay 2 o mas registros con el mismo código y selecciono el item(duplicado) del combobox me muestra la informacion del primero que encuentre en el escaneo de la tabla

la pregunta es:

si tengo 2 códigos duplicados(Necesario) de diferentes datos (Hora) ¿que debo hacer para que cargue el que es y no el que primero consiga?


gracias adelantadas...
Responder Con Cita
  #2  
Antiguo 10-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola lking, prueba de ponerle la opción loCaseInsensitive a tus Locate.

Código Delphi [-]
if Table7.Locate('cod_prov',ComboBox1.Text,[loCaseInsensitive]) and Table7.Locate('hor_pla',ComboBox2.,[loCaseInsensitive]) then
................

También lo puedes hacerlo con un solo Locate.

Código Delphi [-]
if Table7.Locate('cod_prov;hor_pla', VarArrayOf([ComboBox1.Text, ComboBox2.Text]), [loCaseInsensitive]) then

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 10-09-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
hola caro, me puedes decir si hay que agregar algo a las uses o declarar una variable?
Responder Con Cita
  #4  
Antiguo 11-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, no necesitas añadir nada en el uses, tampoco ninguna variable, son necesarios las unidades que te lo añade por defecto DB, ADODB para el AdoQuery y el Locate y Variant para VarArrayOf.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 11-09-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
disculpa caro pero no te entiendo nada jeje disculpa mi ignorancia pero cuando coloco el locaseinsensitive no me corre el programa

este es el codigo que tengo en mi aplicacion

Código Delphi [-]
procedure TForm17.ComboBox1Change(Sender: TObject);
begin
if form1.Table7.Locate('cod_prov',ComboBox1.Text,[locaseinsensitive]) then
  begin
    edit1.Text:=form1.Table7.FieldValues['nom_prov'];
    edit2.Text:=form1.Table7.FieldValues['observacion'];
    edit4.Text:=form1.Table7.FieldValues['hor_pla'];
    edit3.Text:=form1.Table7.FieldValues['gro_pla'];
    SpinEdit1.MaxValue:=form1.Table7.FieldValues['can1'];
    edit5.Text:=form1.Table7.FieldValues['can2'];
    BitBtn1.Enabled:=true;
    BitBtn7.Enabled:=true;
    BitBtn8.Enabled:=true;
  end
  else
  begin
    Application.MessageBox('Erro Grave','');
    exit;
  end;
end;

gracias adelantadas

Última edición por lKinGl fecha: 11-09-2008 a las 02:47:46.
Responder Con Cita
  #6  
Antiguo 11-09-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
será que el locaseinsensitive no es compatible con combobox?

porque tengo un ejemplo de un profesor de programacion y el usa ese locaseinsensitive pero con un dbgrid
Responder Con Cita
  #7  
Antiguo 11-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, lo que le estas pasando de tu comboBox es una cadena, no influye en las opciones, el tercer parametro del Locate es un conjunto que tiene las opciones:

loCaseInsensitive -> te hace una busqueda exacta, sin tomar en cuenta si es mayusculas o minusculas, osea si lo que le pasas en tu combo es "MaRiA" en tu tabla tienes MARIA igual te lo encontrara
loPartialKey -> te hace una busqueda aproximada, si ponemos MA, nos va encontrar el primer registro que comience con MA y supongo que es lo que esta pasando en tu caso, por eso te decía que hagas una busqueda exacta y con el and o de la otra forma debería funcionarte, pero si dices que no te corre, supongo que no te encuentra nada, entonces seguramente lo que tienes en tu comboBox no es igual a lo que tienes en tu tabla, si te sale algún error al ejecutar tu programa, puedes copiarlo y ponerlo aquí.

Si utilizas el Locate, haslo de la segunda forma que te dije, ya que también te hace el and entre los campos que pongas, ve tu si necesitas que sea IoCaseInsensitive o IoPartialKey.

Ahora también puedes hacerlo con consultas.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 11-09-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
gracias caro pero ya solucioné el problema con una consulta sql pero de verdad lo hice de la forma que tu me dijiste y nada el programa da error y señala el locaseinsensitive y se lo quito y corre

mmmmmmmmmm bueno de todas maneras gracias
Responder Con Cita
  #9  
Antiguo 11-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por lKinGl Ver Mensaje
gracias caro pero ya solucioné el problema con una consulta sql pero de verdad lo hice de la forma que tu me dijiste y nada el programa da error y señala el locaseinsensitive y se lo quito y corre
Eso era lo que te faltaba decirme, que te daba error y el error que te daba, yo he sobreentendido que no te daba error pero cuando hacias la busqueda no pasaba nada.

El error que te da es porque tienes que añadir en tu uses la unidad DB, como te decía en mi anterior mensaje te lo añade por defecto cuando colocas los componentes de tu BD que estas utilizando, si no lo tienes es porque tus componentes seguramente estan en otro lado o los creas en ejecución.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #10  
Antiguo 11-09-2008
lKinGl lKinGl is offline
Miembro
 
Registrado: ago 2007
Posts: 333
Poder: 17
lKinGl Va por buen camino
jajajaja ya que ps falto comunicacion de mi parte en decirte que me gusta tener todas las tablas en el form1 nose porque pero no me gusta tenerlas regadas en todos los forms, y lo de las uses te lo comentaba en el post anterior lo que pasa es que usas un lenguaje algo tecnico y no entendi muy bien jeje pero ahora si se lo que me hablas jijiji
Responder Con Cita
  #11  
Antiguo 11-09-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Unhappy Combobox y stringgrid

Hola Caro, he visto que tienes conocimientos solidos de delphi y quisiera pedirte una ayuda, algo similar a lo que te han plateado. Mi problema es el siguiente, tengo un ComboBox, un StringGrid y un boton, lo que quiero hacer es que cuando el usuario seleccione una sucursal y le de un clic al boton me envia todos los empleados de esa sucursal en un stringgrid, mi codigo es el siguiente

<delphi>
procedure T_Marketing.Button1Click(Sender: TObject);
var
x:integer;
begin
query1.close;
query1.sql.clear;
query1.sql.add('select pers_nombre,pers_apaterno,pers_amaterno,pers_sitio,pers_rol,vent_sitio,vent_cliente,detv_sitio,detv_ detventa from TPERSONAL,TVENTAS,TDETVENTAS');
query1.open;
x:=1;
while not Query1.EOF do
begin
sgPorVenta.cells[0, x]:=query1.FieldByName('pers_nombre').Asstring;
sgPorVenta.cells[1, x]:=query1.FieldByName('pers_apaterno').Asstring;
sgPorVenta.cells[2, x]:=query1.FieldByName('pers_amaterno').AsString;
sgPorVenta.cells[3, x]:=query1.FieldByName('pers_rol').Asstring;
sgPorVenta.cells[4, x]:=query1.FieldByName('pers_sitio').Asstring;
sgPorVenta.cells[5, x]:=query1.FieldByName('vent_sitio').Asstring;
sgPorVenta.cells[6, x]:=query1.FieldByName('vent_cliente').Asstring;
sgPorVenta.cells[7, x]:=query1.FieldByName('detv_sitio').Asstring;
sgPorVenta.cells[8, x]:=query1.FieldByName('detv_detventa').Asstring;
inc(x);
query1.next;
if x=1 then sgPorVenta.RowCount:=2
else sgPorVenta.RowCount:=x;
end;

end;
</delphi>

lo que hago ahora es solo con el boton, osea al presionar alli tengo la consulta, pero no debe ser asi, dependiendo de la opcion del combobox debe ser lo que se muestra
Responder Con Cita
  #12  
Antiguo 11-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
Mi problema es el siguiente, tengo un ComboBox, un StringGrid y un boton, lo que quiero hacer es que cuando el usuario seleccione una sucursal y le de un clic al boton me envia todos los empleados de esa sucursal en un stringgrid, mi codigo es el siguiente
Hola Elite237, porque quieres mostar en un StringGrid, yo te aconsejo que lo hagas directamente en un DBGrid, así te ahorras un monton de codigo ademas que contaras con muchas funciones que te ayudaran mucho, para que te ayude y no estemos adivinando, pon la estructura de las tablas que quieres mostrar, lo que se me ocurre es que tengas un DBLookComboBox para las sucursales y en el DBGrid se mostraran los clientes de cada sucursal.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #13  
Antiguo 11-09-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Unhappy Combobox y stringgrid

Hola caro, yo lo hize alguna vez asi con un dbgrid, solo que donde estoy trabajando lo hacen de esa forma y quieren que continue asi, ellos solo utilizan un query y un database para generarlo.

Las tablas que uso son estas:
TPERSONAL
pers_nombre
pers_apaterno
pers_amaterno
pers_sitio(sitio son las sucursales)
pers_rol(el rol, si son cargadores, vendedores..etc)

TVENTAS
vent_sitio(ventas en las sucursales)
vent_cliente(ventas de los clientes)

TDETVENTAS
detv_sitio(detalle de las ventas de la sucursal)
detv_detventa(detalle de las ventas)

espero y me puedas ayudar, al menos como usar el combobox primero para que tome el valor de la base de datos, osea, la sucursal que existen y como haria el if para usarlo.
Responder Con Cita
  #14  
Antiguo 11-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, si es así ni modo, empecemos llenando el ComboBox, tu necesitas mostrar en tu combo las descripciones de las sucursales y tener almacenado en algun lugar los codigos que corresponden a esas sucursales, par este ultimo podemos utilizar un StringList. No has puesto tu tabla sucursales, supongo que tienes un codigo y descripcion para la sucursal.

Código Delphi [-]
var
   codigo, decripcion:string;
   slCodigos : TStringList;
begin
   slCodigos := TStringList.Create;
 
   Query.close;
   Query.SQL.clear;
   Query.sql.text := 'SELECT codigo,descripcion FROM sucursal ';
   Query.Open;
 
   query.First;
   ComboBox.Items.Clear;
   While not(Query.EOF) do
    begin
       codigo:=query.FieldbyName('codigo').AsString;
       descripcion:=query.FieldbyName('descripcion').AsString;

       slCodigos.Add(codigo);
       ComboBox.Items.Add(descripcion);
    
       query.Next;
    end;
  ComboBox.ItemIndex := 0; //para que se posicione en el primer item
end;

de esa forma ya tenemos nuestro combo con todas las descripciones y codigos en nuestro StringList.

Ahora para saber que codigo le pertenece a cada descripción, tienes que recuperar el itemIndex de tu ComboBox y obtener esa posición de tu StringList.

Código Delphi [-]
  
  slCodigos[ComboBox.ItemIndex];

teniendo ya el codigo, ejecutas tu consulta con ese codigo.

Si tienes dudas o algo no te funciona, sigue preguntando, pero trata de hacer tus pruebas antes.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 11-09-2008 a las 15:17:45.
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
tablas y combobox veloki Conexión con bases de datos 2 17-04-2007 12:51:54
Tablas tipo combobox leodelca23 Tablas planas 7 27-09-2006 19:21:06
colocar tablas bd en un combobox vivamotos C++ Builder 3 07-09-2006 14:35:17
Relaciones entre tablas mediante combobox efs Firebird e Interbase 2 17-06-2005 15:03:58
combobox y tablas galmacland Conexión con bases de datos 3 07-04-2005 18:19:57


La franja horaria es GMT +2. Ahora son las 20:11:14.


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