Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con Base de Datos (https://www.clubdelphi.com/foros/showthread.php?t=74928)

avila 19-07-2011 03:51:21

Ayuda con Base de Datos
 
Un saludo a todos, con una consulta:

Estoy trabajando un form con estos elementos: DBEdit1,DBEdit2 y DBEdit3 con estos capturo los datos de los campos NO_ENVIO,CANTIDAD,COD_PRODUCTO de la tabla ADOQuery1DetGral. Cree un campo LookUp para reflejar el nombre de un producto almacenado en la tabla ADOQuery2Productos, en un ComboBox1.

Las Tablas:


1) ADOQuery1DetGral

NO_ENVIO (clave primaria)
COD_PRODUCTO
CANTIDAD

2) ADOQuery2Productos

COD_PRODUCTO (clave foranea)
PRODUCTO

La segunda tabla es para poder crear el LookUp y poder tener en el form el nombre de producto cuando se escribe el código de producto mediante el DBEdit3.

Estoy utilizando instrucciones SELECT * FROM DETGRAL (para abrir la tabla ADOQuery1DetGral) y SELECT * FROM PRODUCTOS (para abrir la tabla ADOQuery2PRoductos)

ahora bien, cuando ejecuto la aplicación todos los DBEdit funcionan correctamente incluyendo el ComboBox1, pudiendose almacenar correctamente los datos en la tabla, pero después de esta operación se deshabilitan el DBEdit3 (correspondiente al campo COD_PRODUCTO tabla ADOQuery1DetGral) y el ComboBox1 (refleja la descripción de producto mismo que obtiene la descripción a través de un LookUp en la tabla ADOQuery2Productos)

¿Cómo puedo hacer para que el Dbedit y ComboBox se mantengan habilitados para poder seguir ingresando datos?
al desaparecerse estos solo puedo agregar NO_ENVIO y CANTIDAD, únicamente. Espero me puedan ayudar. este es el código que uso, corresponde al boton que se encarga de grabar los datos capturados a traves de los Edits.

Notas:
1) El ComboBox1 no lo uso para capturar y grabar el dato en la tabla, solo es para que el usuario vea la descripcion del producto cuando ingresa el codigo de producto.

2) Me interesa colocarle un DBGrid para reflejar los datos ingresados, com puedo hacerlo?

Código Delphi [-]


procedure TForm2.Button1Click(Sender: TObject);
var envio,codprod,cant : String;
begin
  envio:=dbedit1.Text; codprod:=dbedit3.Text; cant:=dbedit2.Text;
  with ADOQuery1DetGral do
  begin
   Close;
   SQL.Clear;
   SQL.Add('insert into detallegral(no_envio,cod_producto,cantidad) values (');
   SQL.Add(''+QuotedStr(envio)+','+QuotedStr(codprod)+','+QuotedStr(cant)+')');
   ExecSQL;
  end;
end;

Este es el código completo:

Código Delphi [-]
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, StdCtrls, Mask, DB, ADODB, Grids, DBGrids;

type
  TForm2 = class(TForm)
    ADOConnection: TADOConnection;
    ADOQuery1DetGral: TADOQuery;
    ADOQuery2Productos: TADOQuery;
    ADOQuery1DetGralID: TAutoIncField;
    ADOQuery1DetGralCOD_PRODUCTO: TWideStringField;
    ADOQuery1DetGralNO_ENVIO: TWideStringField;
    ADOQuery1DetGralID_CUENTA: TWideStringField;
    ADOQuery1DetGralPIEZAS: TIntegerField;
    ADOQuery1DetGralCANTIDAD: TIntegerField;
    ADOQuery1DetGralOBSERVACIONES: TWideStringField;
    ADOQuery1DetGralNO_INVENTARIO: TWideStringField;
    ADOQuery1DetGralFECHA: TDateTimeField;
    ADOQuery2ProductosCOD_PRODUCTO: TWideStringField;
    ADOQuery2ProductosNOMBRE_PRODUCTO: TWideStringField;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    DataSource2: TDataSource;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    ADOQuery1DetGralDESCRIPCION: TStringField;
    Label3: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    Label4: TLabel;
    DBEdit3: TDBEdit;
    Button1: TButton;
    DBGrid1: TDBGrid;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var envio,codprod,cant : String;
begin
  envio:=dbedit1.Text; codprod:=dbedit3.Text; cant:=dbedit2.Text;
  with ADOQuery1DetGral do
  begin
   Close;
   SQL.Clear;
   SQL.Add('insert into detallegral(no_envio,cod_producto,cantidad) values (');
   SQL.Add(''+QuotedStr(envio)+','+QuotedStr(codprod)+','+QuotedStr(cant)+')');
   ExecSQL;
  end;
end;

end.

avila 20-07-2011 00:49:33

Vaya.. si que se las puse dificil, gracias de todas formas...

Casimiro Notevi 20-07-2011 01:30:31

Cita:

Empezado por avila (Mensaje 406876)
Vaya.. si que se las puse dificil, gracias de todas formas...

Es que no se entiende bien el problema que tienes porque es algo muy genérico y sería necesario conocer más detalles.


La franja horaria es GMT +2. Ahora son las 15:41:17.

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