안녕 하세요 ..
Paradox 7으로 테이블( 필드 : Id, Name, Pass, Date) 을 생성하고 작업 중에 막히는 부분이 있어서
이렇게 글을 올립니다.
아직 제가 DB, 특히 델파이는 초보라서.. ^^;;
일단.. TTable, TDataSource, DBGrid를 이용해서 DBGrid에 테이블의 레코드 출력은 했습니다.
찾다 보니..
BDE를 사용하지 않고 동적으로 할당하는 방법이 있더라구요.
그래서..
폼 생성시..
table1.Close;
table1.TableName := ExtractFilePath( Application.ExeName ) + 'LogTable.db';
table1.Open;
이렇게 작성을 했습니다. .
만일 제 컴외에서 프로그램을 실행시킬 경우, 그 컴에 BDE가 설치되어 있지 않으면 안된다구 해서요..
파일만 있으면.. 동적으로 테이블을 엑세스 가능한게 더 좋을 듯 해서. 이렇게 했습니다.
실은.. 이 부분도 .. 좀 애매한 부분이구요.. 과연 이렇게 해두 괜찮은지.. 아직 확신이 쓰지 않아서요..
그리고, 테이블에.. 레코드 추가, 수정, 삭제 루틴은 성공 했습니다.
문제는 .. 검색 부분인데요..
TQuery를 이용해서
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.ADD('select Id From LogTable ');
//
Query1.SQL.ADD('WHERE id like lantia');
또는
Query1.SQL.ADD('Where id = lantia');
이렇게 해봤는데.. 에러가 발생합니다.
invalid field name lantia 라는 에러가 발생을 하네요 ..
제가 뭘 잘못해는지.. 제 실력으로는 알 길이 없어서 이렇게 글을 올립니다.
원래 하고자 하는것은.
Date필드의 검색이였거든요.. 그런데.. 검색 첫 단계 부터 막히니.. 좀.. 막막하네요 ..
오늘을 기준으로 2005-06-10 ~ 2005-06-17 일까지의 레코드 검색 두 부탁드립니다.
그럼 좋은 하루 보내세요 ..
p.s: 아.. 그리고 원래 select id from logtable 이렇게 하면..
id 필드의 레코드만 보여주는게 아닌가요???
이 부분도.. 궁금하네요.. select id를 하던.. select * 를 하던. DBGrid에서는 모든 필드의 레크드를 다 보여주더라구요..
Where id = lantia 이렇게 들어가서 lantia를 필드로 인식합니다.
원래는 where id = 'lantia'
이렇게 들어가게 하시려는 거였죠?
그럼 이렇게 바꿔주면 될거 같습니다.(흠.. 저게 맞나...)
Query1.SQL.ADD('Where id = '''lantia''' ');
그리고 Date 필드는 데이터형이 어떤건지 알아야 하는데요..
그에 맞게 데이터를 써서 비교연산자 (>=, <=)를 쓰면 됩니다.
예를 들면 date가 date형이라면 (이런형이 있나..)
where date >= StrToDateTime('2005-06-10')
and date <= StrToDateTime('2005-06-17')
이렇게 하면 될거 같습니다.Date형이 아니라면 StrToDateTime 함수를 빼면 되겠지요..
"select id를 하던.. select * 를 하던"
이부분은 희안하네요 그렇지 않을거 같은데 말이죠..BDE를 쓰지 않아서 그런건지..
아니면 파라독스라서 그런건지...희안하네요...
TTable에다가 TField를 올려 놓고 TField를 컨트롤 해주면 필드를 제어할수 있는데
원하시는 답이 아니라..ㅡ,.ㅡ;