트랜잭션 로그 같은걸 보여주는 폼이 하나 있는데...
그 폼에 연결되는 테이블은 요일별로 틀려지거든요...
TrLogInfTMON, TrLogInfoTTue, TrLogInfoTWed, TrLogInfoTThu,
TrLogInfoTFri, TrLogInfoTSat, TrLogInfoTSun 이렇게 일곱개의
테이블이 있는데... 만일 오늘의 로그 정보를 보려면...
오늘이 화요일이니까..TrLogInfTTUE라는 테이블을 쿼리해 와야 하잖아요...
근데 이게 문제랍니다...!_!
TTimerPicker이라는 컴포넌트를 사용해서... 트랜잭션 현황을 보고자
하는 날짜를 선택한 후 그 날짜에 해당하는 테이블을 쿼리해 와야 하는데...
테이블 명을 어떻게 적어 줘야 할지 모르겠어요...
[select * from 테이블명]일케 해야 하잖아요...
사용자가 선택한 요일에 맞는 테이블 명 변경을 어떻게 해 줘야 하나요?
좋은 방법 아심...^^ 갈켜 주세요...
후... 오늘 아침바람은... 정말 무섭더군요...=_=
목도리/장갑/두터운 옷... 꼬오옥 준비하셔서 외출하세요...^^
그럼 감기 조심하시구요...
항상... 행복하세요...^^
> 트랜잭션 로그 같은걸 보여주는 폼이 하나 있는데...
>
> 그 폼에 연결되는 테이블은 요일별로 틀려지거든요...
>
>
> 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];
이렇게 하셔도 될 것 같군요.