테이블에서 읽어온 데이타를 dbgrid1에 뿌려준후 업데이트하는 프로그램입니다.
예를 들어) field1,.....,field10 이렇게 있을때
몇개의 데이타는 업데이트 되지않은 상태라서 field1,...field6까지는 data가 있고
field7,...field10는 데이타가 null인 상태입니다. 날짜별로 조회또는 를 하였을때 dbgrid에 focus가 처음열에 있지 않고 feild7의 값이 null로 시작되는 열의 위치에
가져가게 해야 되는데 당체 모르겠습니다.
아래에 소스를 올리겠습니다.
고슈님들의 도움을 애타게 기다리는 왕왕 초봅니다.
unit Unit02;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, Db, StdCtrls, Mask, DBCtrls, DBTables, ExtCtrls, ComCtrls,
Buttons;
type
TForm2 = class(TForm)
Panel1: TPanel;
Query2: TQuery;
Query2lg_enter_date: TStringField;
Query2lg_user_id: TStringField;
Query2lg_user_name: TStringField;
Query2lg_tel: TStringField;
Query2lg_address: TStringField;
Query2lg_mer_code: TStringField;
Query2lg_mer_name: TStringField;
Query2lg_color: TStringField;
Query2lg_style: TStringField;
Query2lg_num: TSmallintField;
Query2lg_seq_no: TStringField;
Query2lg_dev_no: TStringField;
Query2lg_dev_state: TStringField;
Query2lg_area_code: TStringField;
Query2customer_dev_time: TStringField;
Query2customer_name: TStringField;
Query2dev_man: TStringField;
Panel2: TPanel;
Label5: TLabel;
DBEdit4: TDBEdit;
Label6: TLabel;
DBEdit5: TDBEdit;
Label1: TLabel;
DBGrid1: TDBGrid;
Label9: TLabel;
DBEdit8: TDBEdit;
Panel3: TPanel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label13: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Panel4: TPanel;
Label15: TLabel;
Label16: TLabel;
Label24: TLabel;
DBEdit23: TDBEdit;
Label26: TLabel;
Label28: TLabel;
DBEdit25: TDBEdit;
DBEdit27: TDBEdit;
DataSource1: TDataSource;
BitBtn3: TBitBtn;
DateTimePicker1: TDateTimePicker;
Label7: TLabel;
DBEdit6: TDBEdit;
Label11: TLabel;
DBEdit1: TDBEdit;
Label12: TLabel;
DBEdit2: TDBEdit;
Label14: TLabel;
DBEdit3: TDBEdit;
Label17: TLabel;
DBEdit9: TDBEdit;
Label18: TLabel;
DBEdit10: TDBEdit;
Label19: TLabel;
Label8: TLabel;
DBEdit7: TDBEdit;
Label10: TLabel;
Query2lg_price: TFloatField;
DBEdit11: TDBEdit;
ComboBox1: TComboBox;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Query1: TQuery;
Query3: TQuery;
DataSource2: TDataSource;
Query3gisa_code: TStringField;
Query3gisa_name: TStringField;
Query3dong_code: TStringField;
Query3dong_name: TStringField;
DBEdit12: TDBEdit;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1CellClick(Column: TColumn);
procedure ComboBox1Change(Sender: TObject);
procedure DBEdit12KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBEdit27KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DateTimePicker1Enter(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses UnitDM;
{$R *.DFM}
procedure TForm2.BitBtn1Click(Sender: TObject); //조회
begin
query2.close;
query2.parambyname('date').asstring :=
DATETOSTR(DATETIMEPICKER1.DATE);
query2.Open;
IF query2.FieldByName('lg_dev_state').AsString = '미결' THEN
ComboBox1.Text := '미결';
IF query2.FieldByName('lg_dev_state').AsString = '완결' THEN
ComboBox1.Text := '완결';
IF QUERY2.RecordCount < 1 THEN
RAISE EXCEPTION.Create ('DATA가 없습니다!');
ComboBox1.Text := query2.FieldByName('lg_dev_state').AsString;
edit1.text := query2.fieldbyname('lg_dev_no').asstring;
edit2.text := query2.fieldbyname('lg_user_id').asstring;
edit3.text := query2.fieldbyname('lg_user_name').asstring;
dbedit12.text := query2.fieldbyname('lg_area_code').asstring;
end;
procedure TForm2.BitBtn2Click(Sender: TObject); //저장
begin
DM.DB.StartTransaction;
try
query2.ApplyUpdates;
DM.DB.Commit;
query2.close;
query2.open;
except
ModalResult := mrNone;
DM.DB.Rollback;
raise;
end;
end;
procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
ComboBox1.Text := query2.FieldByName('lg_dev_state').AsString;
edit1.text := query2.fieldbyname('lg_dev_no').asstring;
edit2.text := query2.fieldbyname('lg_user_id').asstring;
edit3.text := query2.fieldbyname('lg_user_name').asstring;
dbedit12.text := query2.fieldbyname('lg_area_code').asstring;
end;
end.
> 테이블에서 읽어온 데이타를 dbgrid1에 뿌려준후 업데이트하는 프로그램입니다.
> 예를 들어) field1,.....,field10 이렇게 있을때
> 몇개의 데이타는 업데이트 되지않은 상태라서 field1,...field6까지는 data가 있고
> field7,...field10는 데이타가 null인 상태입니다. 날짜별로 조회또는 를 하였을때 dbgrid에 focus가 처음열에 있지 않고 feild7의 값이 null로 시작되는 열의 위치에
> 가져가게 해야 되는데 당체 모르겠습니다.
with Query1 do
begin
if not(IsEmpty) then
begin
Locate(Field7.FieldName, '', [loCaseInsensitive, loPartialKey]);
//Option은 여기서 별의미가 없건네요..
Grid.SelectedField := Field7;
Grid.SetFocus;
//위 두줄을 빼고 Field7.focuscontrol로 해도됨
// 단 링크가 하나이거나 첫번째 이여야됨
end;
end;
이게 도움이 되었으면 함당.
이거 저것 막 해보세요 ..
즐코 하세요.. ~.*!