Q&A

  • 특정열로 포커스 주기...
테이블에서 읽어온 데이타를 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.

4  COMMENTS
  • Profile
    문홍철 2000.07.07 03:06
    손상수 wrote:

    > 테이블에서 읽어온 데이타를 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;



    이게 도움이 되었으면 함당.

    이거 저것 막 해보세요 ..

    즐코 하세요.. ~.*!









  • Profile
    손상수 2000.07.07 04:34
    감사합니다. 오늘 문홍철님한테 많은 도움을 받는군요..

    복 받으십시요...^^

    그런데



    with Query2 do

    begin

    if not(IsEmpty) then

    begin

    Locate(Field7.FieldName, '', [loCaseInsensitive, loPartialKey]);

    //Option은 여기서 별의미가 없건네요..

    Grid1.SelectedField := Field7;

    Grid1.SetFocus;



    //위 두줄을 빼고 Field7.focuscontrol로 해도됨

    // 단 링크가 하나이거나 첫번째 이여야됨

    end;



    여기서 field7이라는 곳에 테이블의 필드명을 써주니까 에러가 나는데 어케해야 하죠..

    죄송합니다. 밥 까지 먹여달라고 해서..어낙 초짜라서시리...^^;;;;

    [Error] Unit02.pas(154): Undeclared identifier: 'lg_dev_state'

    [Error] Unit02.pas(154): Not enough actual parameters

    [Error] Unit02.pas(165): '.' expected but ';' found

    [Fatal Error] daesang.dpr(9): Could not compile used unit 'Unit02.pas'



  • Profile
    문홍철 2000.07.07 06:39
    손상수 wrote:

    > with Query2 do

    > begin

    > if not(IsEmpty) then

    > begin

    > Locate(Field7.FieldName, '', [loCaseInsensitive, loPartialKey]);

    > //Option은 여기서 별의미가 없건네요..

    > Grid1.SelectedField := Field7;

    > Grid1.SetFocus;

    >

    > //위 두줄을 빼고 Field7.focuscontrol로 해도됨

    > // 단 링크가 하나이거나 첫번째 이여야됨

    > end;

    >

    > [Error] Unit02.pas(154): Undeclared identifier: 'lg_dev_state'

    > [Error] Unit02.pas(154): Not enough actual parameters

    > [Error] Unit02.pas(165): '.' expected but ';' found



    필드명을 걍 써주면 안되죠 Query를 더블클릭하면 lg_dev_state 필드와

    링크된 필드 컴포넌트가 존재 할 걸요. Add 해주셨다면요

    그게 없다면... 소스를 보니

    query2.FieldByName('lg_dev_state').Asstring 이 있더군요

    query2.FieldByname('lg_dev_state')로 해주시면 될 겁니다.

    얘도 필든 속성이 있으니까요

    field7을 query2.FieldByname('lg_dev_state')으로요.

    걍 'lg_dev_state'은 당연히 선언이 안되었겠죠...



    하다보면 조금씩 늘게 되어있습니다.

    즐코하시고요.....~.*!

  • Profile
    손상수 2000.07.07 21:13
    1

    • 문홍철
      2000.07.07 20:53
      > > 문제는 추가시키면 필드에 초기값이 안들어가여..-- > > True든 False든 디폴트 값을 넣고 시픈데...
    • 임형호
      2000.07.07 09:55
      타락천사 wrote: > 안녕하세여..타락임다...^^ > > 모두덜 더운 여름에 잘 지내시져?? > > 요즘 디...
    • 구창민
      2000.07.07 09:28
      타락천사 wrote: > 안녕하세여..타락임다...^^ > > 모두덜 더운 여름에 잘 지내시져?? > > 요즘 디...
    • 구창민
      2000.07.07 04:33
      사발우성 wrote: > > 흠 다름이 아니라엽 디그그리드에서 어떤 셀이라구 해야 하나 아님 컬럼이라구 ...
    • 궁금타
    • 2000.07.07 03:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2000.07.07 08:07
      웹브라우저 컴포를 뭐 쓰셨는지는 모르겠지만 ActiveX WebBrowser는 IE와 같다고 생각하시면 됩니다. 스...
    • 델초보
    • 2000.07.07 03:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 아리엘
      2000.07.07 07:17
      델초보 wrote: > 소켓 연결을 하던 도중... > window socket error가 떴습니다... > 10048이었는데요......
    • 이경문
      2000.07.07 08:10
      포트번호 1024번까지는 쓰지말라는 권고안이 있습니다. 이후에 쓰이는 포트번호도 재수없으면 다른 포트번...
    • 여노기
    • 2000.07.07 03:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김범석
      2000.07.07 23:59
      QuickReport 버젼을 확인해보세요 3.0.3 이면 3.0.4 또는 3.0.5로 업그레이드 하세요 여노기 wrot...
    • 돌멩이
      2000.07.07 04:53
      여노기 wrote: > * 사용환경 : 델파이4 / Windows 98 > > 퀵레포트에서 > 그룹별로 구분해서 출력을 ...
    • 유상민
    • 2000.07.07 03:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2000.07.07 08:12
      프로그램에 버그가 있어서 그럴 겁니다. 컴포에 문제가 있을 수도 있고 Access Violation같은 버그와 같...
    • 사랑하기
      2000.08.05 10:48
      하이.. 이번에 저도 겪었었는데.. 무사히 해결해서.. 아이콘 파일이 혹시나 256 color 이상이 아닌지? ...
    • 사랑하기
      2000.08.05 10:48
      하이.. 이번에 저도 겪었었는데.. 무사히 해결해서.. 아이콘 파일이 혹시나 256 color 이상이 아닌지? ...
    • 성호종
      2000.07.07 02:50
      아리엘 wrote: 간단하게 써머리 지우고 페이지푸터 쓰면 되요~ > 감사해요 ^_^ > 지금 레포트에서 ...
    • 아리엘
      2000.07.07 07:38
      문제는 소계를 내야 한다는것이죠 ^^; 소계를 내려면 디테일 밴드뒤에 차일드밴드를 붙여야 하는데 이건 ...
    • 성호종
      2000.07.10 23:30
      아리엘 wrote: 진작에 말씀을 해주시죵~ 소계를 내는 부분을 레포트에서 모두 해결하시려고 하면 무쟈게 ...
    • 기본
    • 2000.07.07 02:35
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성호종
      2000.07.07 02:58
      기본 wrote: 우선 프로그램에서 Update와 Delete는 피하는것이 좋습니다. 만약 update 또는 delete를 하...
    • 임형호
      2000.07.07 02:47
      델파초짜. wrote: > > 제가 듣기로는 RxLib 에서 지원하는 TrayIcon 컴포넌트를 이용하면.. > > ...
    • 무명
      2000.07.07 02:50
      델파이걸 wrote: > 메인폼을 실행하고나서 생기는 스크롤바 말입니다. > > 음 그러니깐요. > 폼위에다...
    • 성호종
      2000.07.07 03:03
      원령 wrote: 다중삭제라는 단어의 정확한 의미를 판단하기가 어렵네요. 일단 Delphi는 Join된 query는 DB...
    • 원령
      2000.07.07 03:18
      > > 안녕하세요... > > > > 몇번이나 글을 올렸는데 답변이 없어서 다시올립니다... > > 테이블을 ...
    • 문홍철
      2000.07.07 04:16
      > > 다중선택이란건 멀티실렉트를 해서 선택된것을 한꺼번에 지운다는것입니다.. > 함더 답변을 올려주...
    • 원령
      2000.07.07 22:58
      내용무
    • 아리엘
    • 2000.07.07 02:06
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 아세만
      2000.07.07 04:32
      아리엘 wrote: > 안녕하세요.. > > 첫번
    • 조규춘
      2000.07.07 02:28
      아리엘 wrote: > 안녕하세요.. > > 첫번
    • 손상수
    • 2000.07.07 01:47
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 문홍철
      2000.07.07 03:06
      손상수 wrote: > 테이블에서 읽어온 데이타를 dbgrid1에 뿌려준후 업데이트하는 프로그램입니다. > 예를 ...
    • 손상수
      2000.07.07 04:34
      감사합니다. 오늘 문홍철님한테 많은 도움을 받는군요.. 복 받으십시요...^^ 그런데 with Query2 do ...
    • 문홍철
      2000.07.07 06:39
      손상수 wrote: > with Query2 do > begin > if not(IsEmpty) then > begin > Locate(Field7.F...
    • 손상수
      2000.07.07 21:13
      1
    • 이재원
      2000.07.07 17:11
      기냥 OnKeyDown Event를 쓰시면 될거같은디요... Label1.Caption:=IntToStr(Key); Down 은 키코...
    • 조규춘
      2000.07.07 02:13
      델파초짜. wrote: > if HPrevInst 0 then > ShowMessage('프로그램이 실행되어 있습니다.') > else ...
    • 델파초짜.
      2000.07.07 02:25
      답변 감사합니다.. 늘 조규춘님의 도움을 많이 받네요... 그럼. 즐거운. 하루 되세요.. 이만.. 조...
    • 최용일
      2000.07.07 01:45
      안녕하세요. 최용일입니다. HPrevInst는 뭔가요? 아마도 비베하시는 분같은데... 델파이에서는 그렇게 ...
    • 호야
    • 2000.07.07 01:13
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.07 01:33
      안녕하세요. 최용일입니다. TOpenDialog를 사용할 때 FileName속성에 파일이 들어오잖아요... Extrac...
    • 조규춘
      2000.07.07 01:48
      최용일 wrote: > 안녕하세요. 최용일입니다. > > TOpenDialog를 사용할 때 FileName속성에 파일이 들어...
    • 조규춘
      2000.07.07 01:28
      호야 wrote: > OpenDialog를 이용하는데 파일이있는 경로(C:mywork)를 > 알아보려고 하는데 안되네요. >...