이건 TField 객체라고 함다...
델파이는 테이블이나 쿼리를 오픈할때 동적으로 이넘을 만들어서 오픈하는데여
그 시간을 줄이기 위해서 사용자가 만들어 두기도 합니다.
근데 이넘을 만들어 두면 속도는 빨라지는데
만들때 조건에 벗어 나면 에러가 난다는 겁니다.
즉 TField 객체에는 없는 필드가 있는 테이블을 오픈하거나 하면 에러가 난다는 거져..
t_korEmplcd : tstringfield;
t_korName : tstringfield;
t_korUserid : tstringfield;
t_korReport : tstringfield;
t_engDe1 : tfloatfield;
t_engDe2 : tfloatfield;
t_engDe3 : tfloatfield;
이상황에서 Eng 테이블에 de4를 추가하고 테이블을 오픈할려면 에러가 나지요..
글고 값을 접근할때는
그냥 t_engDe1.AsString 이런 식으로 접근가능합니다...
푸른새 wrote:
> talble1의 이름 ---> kor
> kor의 필드 ---> emplcd, name, userid, report
>
> talble2의 이름 ---> eng
> eng의 필드 ---> de1, de2, de3
>
>
> unit a
>
> interface
>
> uses
> windows, forms, db, dbtalbes, stdctrls, controls, extctrls, hemibtn, classes,
> messages, sysutils, graphics, buttons, typinfo, gauges, inifiles, filectrl;
>
> type
> aa = class(tform)
> t_korEmplcd : tstringfield;
> t_korName : tstringfield;
> t_korUserid : tstringfield;
> t_korReport : tstringfield;
>
> t_engDe1 : tfloatfield;
> t_engDe2 : tfloatfield;
> t_engDe3 : tfloatfield;
>
> procedure ......등
>
> private
> {private declarations}
>
> public
> {public declarations}
>
> end;
>
> 위의 소스중 tstringfield라는 부분이 이해가 가지 않습니다.
> 이것을 가지고
> emplcd.text := t_korEmplcd.value;
> 이렇게 사용을 하던데...
>
> tstringfield(or tfloatfield)라는 것을 type부분에서 직접 써넣어야 하는건지 아니면..
> tstringfield(or tfloatfield)를 해주는 무엇인가가 있는건지...
> 어떻게 하면 tstringfield와 tfloatfield라는 것이 나오는 것인지.. 궁금합니다.
>
> 일반적으로 db의 내용을 꺼내올때 저는
> emplcd.text := t_kor.fieldbyname('empcld').asstring;
> 라고 하거든요... 그래서인지 위에 있는 소스가 무지 궁금합니다.
>
> table1 이름 ---> A
> A의 필드 ---> num, name
> A의 active ---> true
>
> type부분에
>
> A_num : tstringfield;
> a_name : tstringfield;
>
> 라고 하고
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> num.text := A_num.AsString;
> name.text := A_name.AsString;
> end;
>
> 이렇게 했는데.... 에러가 나더라고요...
>
> 무엇이 문제인지.... 솔직히 말해 어떻게 사용하는지 모릅니다.
> 만약 제가 하고자 하는 것이 무엇인지 알고 계신다면...알려주십시오...
>
답변이 될지 모르겠지만 .......
도움이 되길.
procedure TForm1.Button1Click(Sender: TObject);
> begin
> num.text := Table1.FieldByName('A_num').AsString;
> name.text := Table1.FieldByName('A_Name').AsString;
> end;
>
이렇게 하심 되거 같네요
참 테이블이 오픈 도어 있어야 한다는건 기본이져
그럼 즐 코딩 하세요