Q&A

  • [급합니다]ComboBox를 이용한 다중검색에서...
자꾸 어드레스 에러가 납니다.

처음 한 번은 되다가 두번째 부터 에러가 납니다. 도와 주세요!!



소스입니다.



unit Usearch1;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons, ExtCtrls, DBCtrls, Grids, DBGrids, Db, DBTables;



type

TForm8 = class(TForm)

Panel1: TPanel;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Image1: TImage;

Image2: TImage;

Image3: TImage;

Image4: TImage;

BitBtn3: TBitBtn;

Query1: TQuery;

DataSource1: TDataSource;

Query1Comdate: TStringField;

Query1Comuse: TStringField;

Query1Comname: TStringField;

Query1Comcode: TStringField;

Query1Comcity: TStringField;

Query1Comgun: TStringField;

Query1Comdong: TStringField;

Query1Comaddr: TStringField;

Query1Comtel1: TStringField;

Query1Comtel2: TStringField;

Query1Comhpone: TStringField;

Query1Comhpone1: TStringField;

Query1Comneedcar: TStringField;

Query1Compay: TStringField;

Query1Comjobyn: TStringField;

Query1Comstart: TStringField;

Query1Comend: TStringField;

Query1Comhday: TStringField;

Query1Comjobrule: TStringField;

Query1Comfuel: TStringField;

Query1Comoil: TStringField;

Query1Comeat: TStringField;

Query1Comroad: TStringField;

Query1Compark: TStringField;

Query1Comroom: TStringField;

Query1Comage: TStringField;

Query1Commainjob: TStringField;

Query1Comchange: TStringField;

Query1Combussy: TStringField;

Query1Comjobdate: TStringField;

Query1Comstyle: TStringField;

Query1Comwork: TStringField;

StaticText1: TStaticText;

sortbox: TComboBox;

GroupBox2: TGroupBox;

sortsel1: TRadioButton;

sortsel2: TRadioButton;

fil1: TPanel;

Label5: TLabel;

Edit1: TEdit;

Label6: TLabel;

ComboBox1: TComboBox;

Panel2: TPanel;

Label7: TLabel;

Label8: TLabel;

procedure setfilter(Sender: TObject);

procedure orderby(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure DBGrid1DblClick(Sender: TObject);

procedure DBGrid1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormCreate(Sender: TObject);

procedure fil1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Edit1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

private

procedure Car_com_Edit;

{ Private declarations }

public

{ Public declarations }

end;

SearchIF = record

select : boolean;

state : string;

end;

var

Form8: TForm8;

Ostring : string;

SIF : array [1..5] of SearchIF;





implementation



uses Ucar_com, UQrydlg1, Uqrydlg;



{$R *.DFM}





procedure TForm8.orderby(Sender: TObject);

var i:integer;

qstring:string;

begin

qstring := '';

case sortbox.ItemIndex of

0: qstring := ' order by comdate ';

1: qstring := ' order by comname ';

2: qstring := ' order by comcode ';

end;

if sortsel1.Checked then qstring := qstring + 'ASC';

if sortsel2.Checked then qstring := qstring + 'DESC';



screen.Cursor := crhourglass;

ostring := qstring;

with Query1 do begin

qstring := '';

disablecontrols;

close;

sql.clear;

sql.add('select * from car_com');

for i:=1 to 5 do begin

if (sif[i].select = true) then begin

if qstring = '' then

qstring := sif[i].state

else

qstring := (qstring) + 'and' + (sif[i].state);

end;

end;

if qstring <> '' then begin

sql.Add(' where ');

sql.Add(qstring);

end;

sql.Add(ostring);

open;

enablecontrols;

end;

screen.Cursor := crdefault;

end;





procedure TForm8.Car_com_Edit;

begin

carcom.Edit1.Text := Query1.FieldByName('Comcity').AsString;

carcom.Edit2.Text := Query1.FieldByName('Comgun').AsString;

carcom.Edit3.Text := Query1.FieldByName('Comdong').AsString;

carcom.Edit4.Text := Query1.FieldByName('Comdate').AsString;

carcom.Edit5.Text := Query1.FieldByName('Comjobdate').AsString;

carcom.Edit6.Text := Query1.FieldByName('Comname').AsString;

carcom.Edit7.Text := Query1.FieldByName('Comaddr').AsString;

carcom.Edit8.Text := Query1.FieldByName('Comtel1').AsString;

carcom.Edit9.Text := Query1.FieldByName('Comhpone1').AsString;

carcom.Edit10.Text := Query1.FieldByName('Comtel2').AsString;

carcom.Edit11.Text := Query1.FieldByName('Comwork').AsString;

carcom.Edit12.Text := Query1.FieldByName('Commainjob').AsString;

carcom.Edit13.Text := Query1.FieldByName('Comchange').AsString;

carcom.Edit14.Text := Query1.FieldByName('Combussy').AsString;

carcom.Edit15.Text := Query1.FieldByName('Comcode').AsString;

carcom.Edit16.Text := Query1.FieldByName('Comneedcar').AsString;

carcom.ComboBox1.Text := Query1.FieldByName('Comuse').AsString;

carcom.ComboBox2.Text := Query1.FieldByName('Comstyle').AsString;

carcom.ComboBox3.Text := Query1.FieldByName('Compay').AsString;

carcom.ComboBox4.Text := Query1.FieldByName('Comjobyn').AsString;

carcom.ComboBox5.Text := Query1.FieldByName('Comstart').AsString;

carcom.ComboBox6.Text := Query1.FieldByName('Comend').AsString;

carcom.ComboBox7.Text := Query1.FieldByName('Comhday').AsString;

carcom.ComboBox8.Text := Query1.FieldByName('Comjobrule').AsString;

carcom.ComboBox9.Text := Query1.FieldByName('Comage').AsString;

carcom.ComboBox10.Text := Query1.FieldByName('Comhpone').AsString;



if Query1.FieldByName('Comfuel').AsString = '제공' then

carcom.CheckBox1.Checked := True

else carcom.CheckBox1.Checked := False;

if Query1.FieldByName('Comoil').AsString = '제공' then

carcom.CheckBox2.Checked := True

else carcom.CheckBox2.Checked := False;

if Query1.FieldByName('Comeat').AsString = '제공' then

carcom.CheckBox3.Checked := True

else carcom.CheckBox3.Checked := False;

if Query1.FieldByName('Comroad').AsString = '제공' then

carcom.CheckBox4.Checked := True

else carcom.CheckBox4.Checked := False;

if Query1.FieldByName('Compark').AsString = '제공' then

carcom.CheckBox5.Checked := True

else carcom.CheckBox5.Checked := False;

if Query1.FieldByName('Comroom').AsString = '제공' then

carcom.CheckBox6.Checked := True

else carcom.CheckBox6.Checked := False;

end;



procedure TForm8.BitBtn1Click(Sender: TObject);

begin

close;

end;



procedure TForm8.DBGrid1DblClick(Sender: TObject);

begin

close;

end;



procedure TForm8.DBGrid1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin



if (key >= 33) and (key <=40) then

Car_com_Edit;



if key = 13 then

close;

end;



procedure TForm8.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if (Button = mbLeft) then

Car_com_Edit;

end;



procedure TForm8.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Query1.Close;

close;

end;





procedure TForm8.FormCreate(Sender: TObject);

var

i : integer;

begin

sortbox.ItemIndex := 0;

sortsel1.Checked := true;

for i:=1 to 5 do begin

sif[i].select := false;

sif[i].state := '';

end;

orderby(sender);

ostring := 'order by comdate ASC';

fil1.color := clFuchsia; fil1.font.color := clwhite;

end;





procedure TForm8.fil1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);



begin



fil1.color := clFuchsia; fil1.font.color := clwhite;

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add('select * from car_com');

Query1.SQL.Add('order by comdate');

Query1.Open;



end;



procedure TForm8.Edit1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin



if key = 13 then begin



if Edit1.Text <> '' then begin

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add('select * from car_com');

Query1.SQL.Add('where comname like "%'+Edit1.text+'%"');

Query1.Open;

fil1.color := clbtnface; fil1.font.color := clblack;

end else

orderby(sender);

end;

Edit1.SetFocus;

end;





procedure TForm8.setfilter(Sender: TObject);

var

lok :word;

i : integer;

qstring : string;

begin



Tqrydlg1.Create(self);

case ComboBox1.ItemIndex of

0 : Qrydlg1.Label1.Caption := '접수일';

1 : Qrydlg1.Label1.Caption := '업체명';

2 : Qrydlg1.Label1.Caption := '동이름';

3 : Qrydlg1.Label1.Caption := '차종';

4 : Qrydlg1.Label1.Caption := '업종코드';

end;



lok := Qrydlg1.ShowModal;



if lok=mrOk then begin



case ComboBox1.ItemIndex of



0 : begin

sif[1].select := true;

sif[1].state := 'comdate like "%'+Qrydlg1.edit1.text+'%"';

end;



1 : begin

sif[2].select := true;

sif[2].state := 'comname like "%'+Qrydlg1.edit1.text+'%"';

end;



2 : begin

sif[3].select := true;

sif[3].state := 'comdong like "%'+Qrydlg1.Edit1.Text+'%"';

end;



3 : begin

sif[4].select := true;

sif[4].state := 'comneedcar like "%'+Qrydlg1.Edit1.Text+'%"';

end;



4 : begin

sif[5].select := true;

sif[5].state := 'comcode like "%'+Qrydlg1.Edit1.Text+'%"';

end;

end;



if lok=mrIgnore then begin



case ComboBox1.ItemIndex of



0 : begin

sif[1].select := false;

sif[1].state := '';

end;



1 : begin

sif[2].select := false;

sif[2].state := '';

end;



2 : begin

sif[3].select := false;

sif[3].state := '';

end;



3 : begin

sif[4].select := false;

sif[4].state := '';

end;



4 : begin

sif[5].select := false;

sif[5].state := '';

end;

end;

end;

Qrydlg1.Free;





if (ComboBox1.ItemIndex = 0) or (ComboBox1.ItemIndex = 1) or

(ComboBox1.ItemIndex = 2) or (ComboBox1.ItemIndex = 3) or

(ComboBox1.ItemIndex = 4) then begin



with Query1 do begin

qstring := '';

disablecontrols;

close;

SQL.Clear;

SQL.Add('select * from car_com');

for i := 1 to 5 do begin

if sif[i].select = true then begin

if qstring = '' then

qstring := sif[i].state

else

qstring := (qstring) + 'and' + (sif[i].state);

end;

end;

if qstring <> ''then begin

SQL.Add('where');

SQL.Add(qstring);

end else begin

fil1.OnClick(sender);

end;

SQL.Add(ostring);

open;

enablecontrols;

end;

screen.Cursor := crdefault;

end;

end;



end;





end.

0  COMMENTS
    • 문홍철
      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)를 > 알아보려고 하는데 안되네요. >...