Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Agregar múltiples Campo de una tabla a múltiples TEdit y TdbEdit (https://www.clubdelphi.com/foros/showthread.php?t=75411)

novato_erick 20-08-2011 22:34:30

Agregar múltiples Campo de una tabla a múltiples TEdit y TdbEdit
 
Hola chicos como están?

Tal vez mi titulo no concuerde con lo que realmente me he trabado:

Lo que quiero es simple:

Tengo una Tabla llamada proveedores, lo que quiero es poder seleccionar proveedores en diferentes Tedit y dbEdit.

Quien lea se preguntara cual es el sentido de usar Edit y DBEdit bueno en el Edit muestro el nombre del proveedor y en dbEdit muestro y guardo el ID_PROVEEDOR(si alguien sabe como hacerlo mejor me lo dice porfa).

Este es mi codigo actual en el Evento DblClick del DBGrid:

Código Delphi [-]
Public
var
cod_idProveedor : Integer;
Nombre: String;

procedure TfrmBuscaProveedor.dbgBuscaProveedorDblClick(Sender: TObject);
begin
       cod_idProveedor := dmacceso.cdsProveedoresID.AsInteger;
       Nombre := dmacceso.cdsProveedoresNOMBRE.AsString;
       frmModificaArticulo.eProveedor1.Text := frmBuscaProveedor.Nombre;
       frmModificaArticulo.edbProveedor1.Text := IntToStr(frmBuscaProveedor.cod_idProveedor);
 Close;
end;

Bueno hasta ahí genial hace lo que quiero... Bueno ahora quiero es agregar un segundo y Tercer proveedor en los Otros TEdit y TDBEdit.

lo he intentado pero lo que hago es al darle el doble click me envía a los otros edit y dbedit el primer proveedor seleccionado.


Podrían orientarme como hacerlo?

Saludos;

novato_erick

ecfisa 20-08-2011 22:59:12

Hola novato_erick.

Bueno, en principio los campos identificadores (ID_PROVEEDOR) se utilizan internamente para identificar unívocamente un registro, lo normal es que sea un campo autoincremental. El como se lleva a cabo este incremento, depende de la base de datos con que estés trabajando.
Imaginate que un usuario tuviera que ingresar a mano los identificadores... tendría que tener en la cabeza cual sería el próximo sino: Key Violation.

En cuanto a lo que queres hacer, para que te muestre un segundo y tercer proveedor tendrías que desplazarte en los registros hasta sus posiciónes, lo que lógicamente haría que pierdas la visualización del anterior.

Quizá sea mas adecuado usar DBEdits para realizar los ingresos y para mostrar los registros aledaños un TDBGrid con su propiedad ReadOnly igual a True.

Un saludo.

Caral 20-08-2011 22:59:25

Hola
No entiendo, cuales otros edits y dbedits ?.
Saludos

novato_erick 20-08-2011 23:09:05

ecfisa

Veo que no me explique.

Ya tengo en la Tabla proveedores registros ingresados verdad?

en un formulario (frmArticulo) quiero agregar sus atributos, dentro de ellos ese producto tiene mas de un proveedor para ser exacto hasta 3 proveedores.

lo que quiero es guardar el el ID_PROVEEDOR en mi tabla de Artículos por eso uso de DBEdit en dicho formulario y el Edit solamente es para mostrar al usuario en nombre del Proveedor.

es por eso mi código anterior llamando al frmBuscaProveedor me muestra mis proveedores y al darle dobleclick en la celda me coloca los datos de ese proveedor.

Pero no he logrado escojer proveedores diferentes. usando los Edit y DBEdit restantes.

Espero haberme explicado.

Saludos;

ecfisa 20-08-2011 23:17:14

Hola.

Creo que ese caso, lo indicado para agregar los proveedores es usar tres TDBlookupComboBox .
Donde en la propiedad ListSource iría el DataSource del proveedor, en ListField el nombre y en KeyField el ID.
En las propiedades DataSource y DataField, el DataSource y el campo receptor de la tabla artículo respectivamente.

Un saludo.

novato_erick 20-08-2011 23:23:21

Gracias ecfisa por prestar atención a mi problema;

sucede que esa opción la ya he implementado lo extraño es que si llamo al formulario de articulo en modo de edición me aparece en blanco los TDBlookupComboBox y no puedo apreciar que proveedores que tenia.

eso ocurre nada mas al utilizar el componente PageControl y poner dentro ese componente TDBlookupComboBox.

Caral

poder agregar tres Edit para mostrar el nombre de los tres diferentes proveedores y los dbEdit (Ocultos) era para poder guardar ahi el el id del proveedor.

Saludos;

Caral 20-08-2011 23:26:58

Hola
Sigo sin entender.
Veo que se busca el proveedor y el nombre, me imagino que de una tabla, pero no veo que se recorra.
No creo que se pueda llenar mas de un dato si solo se pide uno.
No entiendo.
Saludos

novato_erick 20-08-2011 23:33:57

Caral

Cita:

Hola
Sigo sin entender.
Veo que se busca el proveedor y el nombre, me imagino que de una tabla, pero no veo que se recorra.
No creo que se pueda llenar mas de un dato si solo se pide uno.
No entiendo.
Esto fue lo que hice al hacer al evento dobleclick del DBGrid

Código Delphi [-]
 var
    cod_idProveedor,cod_idProveedor2,cod_idProveedor3: Integer;
    Nombre, Nombre2, Nombre3: String;

procedure TfrmBuscaProveedor.dbgBuscaProveedorDblClick(Sender: TObject);
begin
 cod_idProveedor := dmacceso.cdsProveedoresID.AsInteger;
 Nombre := dmacceso.cdsProveedoresNOMBRE.AsString;
 frmModificaArticulo.eProveedor1.Text := frmBuscaProveedor.Nombre;
 frmModificaArticulo.edbProveedor1.Text := IntToStr(frmBuscaProveedor.cod_idProveedor);
 cod_idProveedor2 := dmAcceso.cdsProveedoresID.AsInteger;
 Nombre2 := dmAcceso.cdsProveedoresNOMBRE.AsString;
 frmModificaArticulo.eProveedor2.Text := frmBuscaProveedor.Nombre2;
 frmModificaArticulo.edbProveedor2.Text := IntToStr(FrmBuscaProveedor.cod_idProveedor2);
 Close;
end;

Esta es la forma que yo estoy haciendo... y esta forma no me sirve :( porque me pone el mismo proveedor en los restantes edit y dbedit...


Saludos

ecfisa 20-08-2011 23:34:25

Cita:

sucede que esa opción la ya he implementado lo extraño es que si llamo al formulario de articulo en modo de edición me aparece en blanco los TDBlookupComboBox y no puedo apreciar que proveedores que tenia.
Hola.

Eso no ocurre si previamente haces algo como:
Código Delphi [-]
  DBLookupComboBox1.KeyValue:= tbArticulosProv1.AsInteger;
  DBLookupComboBox2.KeyValue:= tbArticulosProv2.AsInteger;
  DBLookupComboBox3.KeyValue:= tbArticulosProv3.AsInteger;

Saludos.

novato_erick 20-08-2011 23:38:10

ecfisa

Cita:

Hola.

Eso no ocurre si previamente haces algo como:
Código Delphi [-]
Código Delphi [-]
  DBLookupComboBox1.KeyValue:= tbArticulosProv1.AsInteger;
  DBLookupComboBox2.KeyValue:= tbArticulosProv2.AsInteger;
  DBLookupComboBox3.KeyValue:= tbArticulosProv3.AsInteger;

Disculpa mi ignorancia pero donde hago eso? en el evento OnShow de mi frmArticulo, en el el evento OnCreate del frmArticulo?

Saludos

ecfisa 20-08-2011 23:41:06

Hola.

Puede ser, si mostrás un solo artículo en cada ingreso al form. No sé como lo tenés implementado.
Pero si queres que al ir desplazándote por los artículos, los DBLookupComboBox se vayan actualizando quizá debas ponerlo en el evento AfterScroll de la tabla artículos.

Saludos.

Caral 20-08-2011 23:44:25

Hola
Sigo pensado igual, no se recorre la tabla.
El codigo que muestras nunca mostrara mas que un dato.
Asi lo veo yo.
Hay que recorrer la tabla.
Me gustaria ver el programa, pero lastima que no pueda ver la BD.
Saludos

novato_erick 21-08-2011 00:04:46

ecfisa

yo utilizo TSQLQuery, no tablas;

nunca he tenido la oportunidad de usar tablas...

Caral

Por mi no hay ningún problema que veas mi base de datos, mucho menos que veas mi programa pero la pregunta es como?

Saludos

Caral 21-08-2011 00:08:33

Hola
Creo que puedes colocar todo en un zip.
Quitale el exe para que no pese y lo subes aqui mismo.
Si no, enviame un mensaje privado y te doy mi correo.
Saludos

ecfisa 21-08-2011 00:12:39

Cita:

yo utilizo TSQLQuery, no tablas;
nunca he tenido la oportunidad de usar tablas...
Pues te tengo una sorpresa... estas usando tablas!!! , mediante el TSQLQuery te conectas con ellas. :)

No conozco el componente TSQLQuery, pero seguro que tiene el evento AfterScroll. Por lo tanto sería allí donde deberías ubicar la actualización de los TDBLookupComboBox.
Excepto que sólo muestres un artículo por pantalla y salgas. En este último caso el evento OnShow del form sería un lugar adecuado para la actualización.

Un saludo.

novato_erick 21-08-2011 00:17:46

Estoy Choleando jajajajaja...

Si se que estoy usando tablas sin embargo no he usado el Componente TTAble jajaja a eso me referia... y si solo muestro un proveedor por pantalla y salgo... lo intente haciendo esto pero mi formulario se comporta extraño porque aun así no los muestra...

Código Delphi [-]
 procedure TFrmArticulos.FormShow(Sender: TObject);
  begin
     lblPrecioFijo.Visible:= False;
     dbePfijos.Visible:= false;
     dbePfijos2.Visible:= false;
     dbePfijos3.Visible:= false;
     DBLookupComboBox6.KeyValue:= dataArticulos.cdsArticulosID_PROVEEDORES.AsInteger;
     DBLookupComboBox7.KeyValue:= dataArticulos.cdsArticulosID_PROVEEDORES2.AsInteger;
     DBLookupComboBox8.KeyValue:= dataArticulos.cdsArticulosID_PROVEEDORES3.AsInteger;
  end;

Saludos

Caral 21-08-2011 00:19:28

Hola
No entiendo que componentes usas?.
Tampoco se que BD ?.
Saludos

novato_erick 21-08-2011 00:22:58

Caral

Utilizo Firebird 2.5 como BD

y componente DBExpress como TSQLQuery, TClientDataSet y TDataSetProvider en un modulo de datos

y TDataSource en los formularios.

Saludos

Caral 21-08-2011 00:25:08

Hola
Ah, lastima, yo no tengo esos componentes.
Yo uso los IBX de la paleta interbase.
No voy a poder ver el programa, no me va a dejar cargarlo.
Saludos

novato_erick 21-08-2011 00:28:03

Tengo el Embarcadero® Delphi® XE Version 15.0.3953.35171
Copyright © 2010 Embarcadero Technologies, Inc. All Rights Reserved
Enterprise

Bueno eso es lo que dice mi Equipo...

De todas manera gracias Caral...

Saludos


La franja horaria es GMT +2. Ahora son las 00:15:52.

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