다른 테이블의 필드에 저장하려 합니다.
테이블이 두개가 있습니다.
기업체정보(CoInfo.DB)와 대분류(LargeCode)
기업체정보 테이블은 등록번호 주소 사업자 등등이 있고 대분류라는 필드가 있습니다.
대분류테이블은 코드와 대분류이름
A 컴퓨터
B 전자
C 화학
. .
" "
등등입니다.
콤보박스에 대분류테이블중 대분류 이름을 뿌려주었습니다.
그중 콤보박스에서 선택하여 저장을 누르면 기업체정보테이블의 대분류필드에 대분류테이블의 코드가 들어가게 하고 싶은데 잘 모르겠습니다.
아무래도
inset
value (select
from
where)
를 써야 할 것 같은데 형식이나 문법을 잘 모르겠습니다.
쏘스를 보면
//저장버튼을 눌렀을 때 입니다.
procedure TTradeF.registClick(Sender: TObject);
var i, j : integer;
begin
if not tbReg.Active then
TbReg.Open;
if not tbsuchul.Active then
Tbsuchul.Open;
if not tbproduct.Active then
Tbproduct.Open;
//try
tbReg.insert;
tbReg.FieldByName('dDate').asdateTime := DateTimePicker1.Date;
tbReg.FieldByName('dno').value := edtdno.Text;
tbReg.FieldByName('dname').value := dname.Text;
tbReg.FieldByName('SaupNo').value := SaupNo.Text;
tbReg.FieldByName('dzip').value := dzip.Text;
tbReg.FieldByName('dadd').value := dadd.Text;
tbReg.FieldByName('dtel').value := dtel.Text;
tbReg.FieldByName('dFax').value := dFax.Text;
tbReg.FieldByName('demail').value := dEMail.Text;
tbReg.Post;
tbReg.refresh;
for i :=0 to mmsuchul.Lines.Count-1 do begin
TbSuchul.Insert;
TbSuchul.FieldByName('dno').Value := edtDno.Text;
Tbsuchul.FieldByName('suchul').Value := mmSuchul.Lines.Strings[i];
tbSuchul.Post;
tbSuchul.Refresh;
end;
for j :=0 to mmproduct.Lines.Count-1 do begin
Tbproduct.Insert;
Tbproduct.FieldByName('dno').Value := edtDno.Text;
Tbproduct.FieldByName('product').Value := mmproduct.Lines.Strings[j];
Tbproduct.Post;
Tbproduct.Refresh;
end;
with qrylarge do begin <==이부분부터 잘 모르겠네여
Close;
SQL.Clear;
SQL.Add('INSERT INTO CoInfo ');
SQL.Add('(대코드) ');
SQL.Add('VALUES');
SQL.Add('');
execsql;
end;
//except
//showMessage('입력 중 오류발생');
//end;
end;
procedure TTradeF.FormCreate(Sender: TObject);
begin
DateTimePicker1.Date := date;
with qryLarge do begin
close;
sql.Clear;
sql.Add('select LargeName');
sql.Add('from LargeCode');
open;
while not EOF do begin
cblarge.Items.add(FieldByName('largeName').AsString);
next;
end;
end;
end;
//요부분은 어제 가르쳐 주신부분입니다.감사
procedure TTradeF.cblargeChange(Sender: TObject);
begin
with qryMiddle do begin
Close;
sql.Clear;
sql.add('select MiddleName');
sql.add('from middlecode');
case cblarge.ItemIndex of
0 : sql.add('where 중코드 like ''A%''');
1 : sql.add('where 중코드 like ''B%''');
2 : sql.add('where 중코드 like ''C%''');
3 : sql.add('where 중코드 like ''D%''');
4 : sql.add('where 중코드 like ''E%''');
5 : sql.add('where 중코드 like ''F%''');
6 : sql.add('where 중코드 like ''G%''');
7 : sql.add('where 중코드 like ''H%''');
8 : sql.add('where 중코드 like ''I%''');
9 : sql.add('where 중코드 like ''J%''');
10: sql.add('where 중코드 like ''K%''');
11: sql.add('where 중코드 like ''L%''');
12: sql.add('where 중코드 like ''M%''');
13: sql.add('where 중코드 like ''N%''');
14: sql.add('where 중코드 like ''O%''');
15: sql.add('where 중코드 like ''P%''');
end;//case
open;
cbmiddle.Clear;
While not EOF do
begin
cbmiddle.Items.add(FieldByName('middleName').AsString);
next;
end; //while
end;
end;
end.
begin
close;
sql.Clear;
sql.Add('select 코드, 코드명 from 대분류테이블');
Open;
combobox.items.Value(FieldByName('코드').AsString) := FieldByname('코드명').AsString;
end;
음...잘 생각이 나질 않는데... 위와 같은 방법으로 하시면 해결 하실꺼 같은데...^^;;
콤보 박스에 코드명을 선택 했을 때 코드값을 넘기는 프로시져나 함수를 만들어서 쓰시면 될거 같네염...^^;;
그럼 즐코 하시구염...
좀더 확실한 게 있음 다시 답변 드리지염...