안녕하세요!..
덜파이를 공부한지 1주일이 조금 지났습니다. ^*^..
프로그램을 하다보니 답답해서 이렇게 자문을 구하고자 합니다.
고수님들의 의견 부탁드립니다.
소스에서 배열 A와 B에 있는 DATA을 비교해서 (A에는 50개 , B에는 100개)
A에있고, B에도 있으면 skip
A에있고, B에 없으면 DBGrad에 출력하는 program을 작성할려고합니다.
(결국은 A에서 B에 없는 DATA만 추출)
그런데 비교문을 작성하기가 쉽지가 않습니다..
지도 부탁합니다.
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Db, DBTables;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Query1: TQuery;
Database1: TDatabase;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Button2: TButton;
Query2: TQuery;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var
A : array[1..100] of string;
B : array[1..100] of string;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
With Query1 do
begin
Query1.close;
Query1.sql.clear;
Query1.sql.Add('select distinct 이름1 from user_name');
Query1.open;
end;
Query1.First;
for i := 1 to Query1.RecordCount do
begin
A[i] := Query1.FieldByName('이름1').AsString; <<- 첫번째배열에 넣는 부분,,맞나요?.
Query1.Next;
end;
Query1.Active := true;
edit1.text := inttostr(Query1.RecordCount);
if A[i] = '' then
ShowMessage('추출완료!');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
J : integer;
begin
With Query2 do
begin
Query2.close;
Query2.sql.clear;
Query2.sql.Add('select distinct 이름2 from mana_name');
Query2.open;
end;
Query2.First;
for j := 1 to Query2.RecordCount do
begin
B[j] := Query2.FieldByName('이름2').AsString; <<- 두번째 배열어 넣는부분..
Query2.Next;
end;
Query2.Active := true;
edit2.text := inttostr(Query2.RecordCount);
if B[j] = '' then
ShowMessage('추출완료!');
for 문 , 또는 where <<=== 여기서부터 막혀서 진도가 나가지 않습니다.
if ~~~ 도와 주십시요!...
~~~ 너무 질문이 황당 했나요!...
end;
end.
언제나 즐거운 날 되세요!... 델파이 신생아!!..^*^
@_@
델파이와 sql을 따로 생각 하는 습관을 들이세여...
sql에서 해결 할 수 있는 것은 sql 로 해결 하는 습관이 필요함다...
대부분의 비지니스 로직은 sql로 해결 가능합니다...
배열에 넣고 빼고 할것 없이..
select distinct 이름1 from table1
where 이름1 not in (select distinct 이름2 from table2)
그리구 distinct 는 사용할 때와 안할때 구분을 잘하셔야 합니다..
함 해보세여...