Q&A

  • sql문에서 db를 변수로 지정하기
델초보입니다.
너무 골머리가 아파서 문의드립니다.

....
....
var CurrentDBName:String;
....
....
db를 동적으로 생성해서 사용하려고
위와같이 CurrentDBName 를 변수로 지정해 줬습니다.

그리고 Form1.FormShow 이벤트에서
CurrentDBName:=ExtractFilePath(Application.ExeName) + 'dat\1.db';
라고 지정도 해쭸지만 아래 소스의 select문에서 "token not found token C"란 에러가 납니다.
그래서 Form1.FormShow 이벤트에서 CurrentDBName:='\1.db'; 라고 지정해주고 C드라이브의 루트에
'1.db'파일을 복사해 주었더니 인식을 합니다.
무엇이 잘못되었는지 어제 새벽부터 게시판을 질답란을 검색해봐도
알수가없읍니다.

제 생각에는 변수에 'c:\프로그램모음\팁관리\dat' 란 스트링이 들어가 있는데
'C' 다음에오는 ':'을 인식을 못해서 그런건 아닌가 생각도 해봅니다.
고수닙들의 답변 부탁드립니다.


procedure query_start();
begin
  Form1.DataSource1.dataset := Form1.Query1;
  Form1.Query1.DatabaseName := ExtractFilePath(Application.ExeName) + 'dat';  // alias
  Form1.DBGrid1.DataSource := Form1.DataSource1;


  Form1.DBGrid1.Columns.Add;  // 원하는 컬럼수만큼 추가.
  Form1.DBGrid1.Columns[0].FieldName := 'title'; // column 명
  Form1.DBGrid1.Columns[0].Title.Caption:='제목';
  Form1.DBGrid1.Columns[0].Color:=$009C9C4E;
  Form1.DBGrid1.Columns[0].Width:=400;

  Form1.DBGrid1.Columns.Add;  // 원하는 컬럼수만큼 추가.
  Form1.DBGrid1.Columns[1].FieldName := 'Mk_date'; // column 명
  Form1.DBGrid1.Columns[1].Visible:=false;

  Form1.DBGrid1.Columns.Add;  // 원하는 컬럼수만큼 추가.
  Form1.DBGrid1.Columns[2].FieldName := 'memo'; // column 명
  Form1.DBGrid1.Columns[2].Visible:=false;

  Form1.DBGrid1.Columns.Add;  // 원하는 컬럼수만큼 추가.
  Form1.DBGrid1.Columns[3].FieldName := 'gooboon'; // column 명
  Form1.DBGrid1.Columns[3].Visible:=false;

      with Form1.Query1 do
        begin
            Close;
            SQL.Clear;
            sql.add(format('select * from %s', [CurrentDBName] ));
            Open;

        end;
end;
1  COMMENTS
  • Profile
    김경록 2003.12.17 02:48
    Source상으로는 Error가 없는것으로 보이구여..

    일단여,
    Form1.Query1.DatabaseName의 값에
    "1.db"의 실제 경로를 넣어보고
    Connected를 True로 변경해 보세여
    예를 들여, Form1.Query1.DatabaseName에
    "c:\프로그램모음\팁관리\dat\"를 넣고 Connected를
    True로 변경해 보세여..
    잘 된다면,
    ExtractFilePath(Application.ExeName) 이부분에 문제가 있는겁니다..
    물론, DatabaseName에 실제경로를 넣고도 잘 사용했었기 때문에
    문제가 발생할꺼라고 생각하지 않습니다..
    단!!!
    Query1가 Open되어져 있지 않았다는 전제하에서 말입니다..



    즉, ApplicationExeName의 경로가
    님이 원하시는 "'c:\프로그램모음\팁관리\" 값을 Return하지 않기
    때문이 아닌지 싶습니다..
    즉, 델파이에서 Build시에 생성되는 실행파일이
    "c:\프로그램모음\팁관리\"에 생성되지 않고,
    다른 곳에 생성되는게 아닌지 의심이 가는군여..
    즉, "C:\개발\"과 같이 다른 Directory에 실행파일이 생성되는거이
    아닌지 의심이 됩니다..
    확인해 보시구여..
    제가 사용해 본봐로는  C:\   이거때문에 Error가 발생했던 적이
    없었던 것으로 기억이 납니다..
    (실제 db_start()의 시작시점에서는 Query1의 Close가 되는 Coding부분이
    없어 보이는군여..)