Q&A

  • 날마다 테이블명 다르게 연결 하기
트랜잭션 로그 같은걸 보여주는 폼이 하나 있는데...



그 폼에 연결되는 테이블은 요일별로 틀려지거든요...





TrLogInfTMON, TrLogInfoTTue, TrLogInfoTWed, TrLogInfoTThu,



TrLogInfoTFri, TrLogInfoTSat, TrLogInfoTSun 이렇게 일곱개의



테이블이 있는데... 만일 오늘의 로그 정보를 보려면...



오늘이 화요일이니까..TrLogInfTTUE라는 테이블을 쿼리해 와야 하잖아요...



근데 이게 문제랍니다...!_!



TTimerPicker이라는 컴포넌트를 사용해서... 트랜잭션 현황을 보고자



하는 날짜를 선택한 후 그 날짜에 해당하는 테이블을 쿼리해 와야 하는데...



테이블 명을 어떻게 적어 줘야 할지 모르겠어요...



[select * from 테이블명]일케 해야 하잖아요...



사용자가 선택한 요일에 맞는 테이블 명 변경을 어떻게 해 줘야 하나요?





좋은 방법 아심...^^ 갈켜 주세요...







후... 오늘 아침바람은... 정말 무섭더군요...=_=



목도리/장갑/두터운 옷... 꼬오옥 준비하셔서 외출하세요...^^



그럼 감기 조심하시구요...



항상... 행복하세요...^^



2  COMMENTS
  • Profile
    박성훈 1999.12.08 18:40
    김매경 wrote:

    > 트랜잭션 로그 같은걸 보여주는 폼이 하나 있는데...

    >

    > 그 폼에 연결되는 테이블은 요일별로 틀려지거든요...

    >

    >

    > TrLogInfTMON, TrLogInfoTTue, TrLogInfoTWed, TrLogInfoTThu,

    >

    > TrLogInfoTFri, TrLogInfoTSat, TrLogInfoTSun 이렇게 일곱개의

    >

    > 테이블이 있는데... 만일 오늘의 로그 정보를 보려면...

    >

    > 오늘이 화요일이니까..TrLogInfTTUE라는 테이블을 쿼리해 와야 하잖아요...

    >

    > 근데 이게 문제랍니다...!_!

    >

    > TTimerPicker이라는 컴포넌트를 사용해서... 트랜잭션 현황을 보고자

    >

    > 하는 날짜를 선택한 후 그 날짜에 해당하는 테이블을 쿼리해 와야 하는데...

    >

    > 테이블 명을 어떻게 적어 줘야 할지 모르겠어요...

    >

    > [select * from 테이블명]일케 해야 하잖아요...

    >

    > 사용자가 선택한 요일에 맞는 테이블 명 변경을 어떻게 해 줘야 하나요?

    >

    >

    > 좋은 방법 아심...^^ 갈켜 주세요...

    >

    >

    >

    > 후... 오늘 아침바람은... 정말 무섭더군요...=_=

    >

    > 목도리/장갑/두터운 옷... 꼬오옥 준비하셔서 외출하세요...^^

    >

    > 그럼 감기 조심하시구요...

    >

    > 항상... 행복하세요...^^

    >



    안녕하세요. 도움이 되길바라면서 씁니다.

    참고로 아래에서 열거형 상수를 문자열로 바꾸는 팁은 김영대님의 홈에서 참조했음을

    밝힘니다.(열거형을 문자열로 바꾸는 부분이 재미있어 올려봤습니다.)



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

    Dialogs, typinfo, StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }



    funtion TForm1.YoilDbName:String;



    public

    { Public declarations }

    end;



    TYoilType = (None, Sun, Mon, Tue, Wed, Tur, Fri, Sat);



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    function YoilName(Numb: TYoilType): String; //Numb는 TYoilType또는 Integer형

    begin

    // 컴파일러에 의해 생성된 run-time type information 을 읽는다

    Result := GetEnumName(TypeInfo(TYoilType), Ord(Numb));

    end;



    funtion TForm1.YoilDbName:String;

    var

    idx:Integer;

    yoil:String;

    begin

    Result:='';



    //DayOfWeek는 sysutils.pas에 있는 함수-요일번호를 리턴

    idx:= DayOfWeek(DateTimePicker1.Date);



    // TYoilType은 내부적으로 0 ~ 10 으로 처리됨

    Yoil:= YoilName(TYoilType(idx)); // type casting

    Result:= 'TrLogInfoT'+Yoil+'.db';

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    var

    yoildb:string;

    begin

    yoildb:= YoildbName;

    With Query1 do begin

    Close;

    sql.Clear;

    sql.Add('Select * from "'+yoildb'"');

    Open;

    end;

    end;



    end.



    위의 방법대신

    const

    YoilName:array[1..7] of String=('Sun','Mon','Tue','Wed','Tur','Fri','Sat');

    를 선언하시고



    idx:= DayOfWeek(DateTimePicker1.Date);

    YoilName[idx];



    이렇게 하셔도 될 것 같군요.



  • Profile
    임형호 1999.12.07 21:40
    김매경 wrote:

    > 트랜잭션 로그 같은걸 보여주는 폼이 하나 있는데...

    >

    > 그 폼에 연결되는 테이블은 요일별로 틀려지거든요...

    >

    >

    > TrLogInfTMON, TrLogInfoTTue, TrLogInfoTWed, TrLogInfoTThu,

    >

    > TrLogInfoTFri, TrLogInfoTSat, TrLogInfoTSun 이렇게 일곱개의

    >

    > 테이블이 있는데... 만일 오늘의 로그 정보를 보려면...

    >

    > 오늘이 화요일이니까..TrLogInfTTUE라는 테이블을 쿼리해 와야 하잖아요...

    >

    > 근데 이게 문제랍니다...!_!

    >

    > TTimerPicker이라는 컴포넌트를 사용해서... 트랜잭션 현황을 보고자

    >

    > 하는 날짜를 선택한 후 그 날짜에 해당하는 테이블을 쿼리해 와야 하는데...

    >

    > 테이블 명을 어떻게 적어 줘야 할지 모르겠어요...

    >

    > [select * from 테이블명]일케 해야 하잖아요...

    >

    > 사용자가 선택한 요일에 맞는 테이블 명 변경을 어떻게 해 줘야 하나요?

    >

    >

    > 좋은 방법 아심...^^ 갈켜 주세요...

    >

    >

    >

    > 후... 오늘 아침바람은... 정말 무섭더군요...=_=

    >

    > 목도리/장갑/두터운 옷... 꼬오옥 준비하셔서 외출하세요...^^

    >

    > 그럼 감기 조심하시구요...

    >

    > 항상... 행복하세요...^^

    >

    해당요일을 넣고 해당요일에 따라 연결하는 DB명을 다르게 설정한다는 말씀이신가요?

    TrLogInfTMON, TrLogInfoTTue, TrLogInfoTWed, TrLogInfoTThu,

    TrLogInfoTFri, TrLogInfoTSat, TrLogInfoTSun 이것이 DB명인가요?

    그럼..

    TTimerPicker 를 사용하여 날짜를 선택한다음... 그 날짜가 무슨 요일인가는 formatdatetime 함수를 사용하면 알수있을테고요. 그럼 다음 조건문을 사용하여 해당요일에 따라서 해당 DB명을 변수에 저장한다음(미리 문자형변수를 지정한다음)...가령 월요일이면 TrLoglnfTMON을 문자열 변수에 저장하게 한 다음 아래와 같이 SQL문을 작성하면 될것같군요.

    아래와 같이하면 해당변수명에 따라 연결하는 DB를 다르게 할 수 있는것 같습니다.



    전에 제가 이런식으로 해보긴했는데... 더 좋은 방법이 분명히 있을것 같군요. 이글을 보시고 더 좋은 방법이 있으신 분은 수정을 해주시면 좋겠습니다. 저두 도움이 될것 같구요.

    그럼... 이만...



    with query1 do begin

    close;

    sql.clear;

    sql.add('select * from '+변수명);

    open;

    end;