Q&A

  • 쿼리A의 select 결과물을 쿼리B에 입력하고 싶을때 이게 이렇게 복잡한 것인가요?
안녕하십니까? 델 고수님들. 저도 어이 내공을 쌓아야 할텐데..



QueryA --> Field_A, Field_B (예를 들면 동과 그에 해당하는 우편번호가 저장되어 있는 테이블)

Query1 --> Field_1, Field_2 (예를 들면 회원별로 데이타를 입력하는 테이블)



QueryA에서 조건에 맞게 select 한 Field_A와 Field_B값을

Query1에의 Field_1( <=Field_A), Field_2( <=Field_B)에 각각 넣는데..

Field_A값을 넣으면 자동으로 그에 해당하는 Field_B값도 넣을려고 합니다.



원래 데이타베이스를 만드는 목적이 이와같이 미리 설정된 데이타를 자동을로 입력하는데 있지 않습니까?

제가 초보라서 잘 몰라서 그런데 이 작업이 이렇게 복잡한 것인가요?



방법1, 2)둘다 안되고..

방법3)은 일단 Field_A(=Field_1)의 선택한 값에 의해 Editbox에 Field_B의 보여주여 주는 것까지는 성공했습니다. 앞으로 이 값을 Field_2에 자동으로 입력되는 것을 마저 해야 하는데..



뭔가 훨씬 더 간단한 방법이 있을것 같은데... 데이타 하나 자동으로 입력하는데 이렇게 복잡하면..





procedure TForm1.Button3Click(Sender: TObject);

begin with Query2 do

{방법1: select한뒤 그 값을 Edit를 써서 update하는 방법)

begin

Close;

SQL.Clear;

SQL.Add('select ITEMUP from Library where ItemName = :s5');

ParamByName('s5').AsString := Trim(DBEdit2.text);

Open;

end;

with Query1 do

begin

// RequestLive := True;

Edit;

FieldByName('BOOKUNITPRICE').AsFloat := Query2.FieldByName('ITEMUP').AsFloat;

Post;

end;

{방법2: 서브쿼리를 이용하는 방법, 서브쿼리는 SQL문에서는 잘돌아감..허나.. }

with Query1 do

begin

Close;

SQL.Clear;

SQL.Add('update booking set BooKUnitPrice = ');

SQL.Add('(select ITEMUP from Library where ItemName = :s5)');

SQL.Add('where BookItem = :s5');

ParamByName('s5').AsString := DBEdit2.text;

ExecSQL;

end;



end; }



방법3)

procedure TForm1.DBEdit2Change(Sender: TObject);

begin Query2.Close;

Query2.SQL.Clear;

Query2.SQL.Add('select ITEMUP from Library where ItemName = :s5');

Query2.ParamByName('s5').AsString := DBEdit2.text ;

Query2.Open;

edit2.Text := FloatToStr(Query2.FieldByName('ITEMUP').AsFloat);

end;

0  COMMENTS