Ver Mensaje Individual
  #1  
Antiguo 19-07-2011
avila avila is offline
Miembro
 
Registrado: may 2011
Posts: 13
Reputación: 0
avila Va por buen camino
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.

Última edición por avila fecha: 19-07-2011 a las 03:54:31.
Responder Con Cita