안녕하십니까? 델 고수님들. 저도 어이 내공을 쌓아야 할텐데..
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;