Q&A

  • DB테이블컴포넌트 FindKey 호출시 에러
주소록관리 거든여 근데 폼은 작성을 다했는디 실행시에 에러가 나네여
고수님들 머가 문제인지 좀 도와주세여 급합니다 오늘 오후에 작성해서
제출해야 하거든여
소스임돠
unit kks;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Buttons, ExtCtrls, DBCtrls, Grids, DBGrids, Db,
  DBTables, Mask;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    DBNavigator1: TDBNavigator;
    Table1: TTable;
    DataSource1: TDataSource;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    DBGrid1: TDBGrid;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBMemo1: TDBMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Panel1: TPanel;
    Label12: TLabel;
    Label13: TLabel;
    ComboBox1: TComboBox;
    Input: TEdit;
    btnFind: TButton;
    btnNear: TButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure btnFindClick(Sender: TObject);
    procedure btnNearClick(Sender: TObject);
    procedure InputChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Table1.Refresh;   //Refresh후 종료
       Close;  

end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Case ComboBox1.ItemIndex  of   //검색시 사용할 인덱스 항목 선정
       0 : Table1.IndexFieldNames := 'num';     //기본키(Primary key)
       1 : Table1.IndexFieldNames := 'name';  //보조키(Secondary key)
       2 : Table1.IndexFieldNames := 'company';


end;

procedure TForm1.btnFindClick(Sender: TObject);     요부분이 에러 임돠
begin
if (Input.Text = '') then
         MessageDlg('검색자료를 입력하시오.', mtError, [mbOK], 0)
      else
      if not Table1.FindKey([Input.Text]) then
         MessageDlg('일치하는 자료가 없습니다.',
                       mtInformation, [mbOK], 0)

end;

procedure TForm1.btnNearClick(Sender: TObject);
begin
  if (Input.Text = '') then
         MessageDlg('검색자료를 입력하시오.', mtError, [mbOK], 0)
      else
         Table1.FindNearest([Input.Text]);

end;

endprocedure TForm1.InputChange(Sender: TObject);
begin

end;

.
2  COMMENTS
  • Profile
    하기 2002.06.18 02:38
    if not Table1.FindKey([Input.Text]) then 이렇게 쓰셨는데...
    아마도 FindKey = True or False 이런식으로 써 주셔야 하지 않을까요?

    if Table1.FindKey([Input.Text]) = True then  이렇게 말이죠...
    고수가 아니라서. 쩌비 ~~~그럼 ..  ^^;



  • Profile
    이재식 2002.06.12 12:44
    안녕하세요

    실무상에서는 테이블 컴포넌트를 안쓰는것이 좋다고 전
    개인적으로 생각합니다 ^^;

    아무튼, findkey는 인덱스가 있어야합니다.
    indexname이나 indexfieldname에 값을 미리 넣어주시고
    findkey를 활용해보세요.

    로컬디비뿐만 아니라, 제 기억으론 MS-SQL에서도 인덱스이름 또는
    인덱스 필드가 설정되어야 작동한 걸로 기억됩니다.

    우선 위에서 말한부분을 함 해보시구여,
    try except end ; 문으로 묶어서 함 결과를  보는것도 괜찮을듯 하네요.

    • 최용일
      2002.06.13 00:27
      제가 말한 대로 아이콘 바꾸어 보셨나요? Project/Options...에서 Application탭에서 바꾸어 보세요. 25...
    • 이영주
      2002.06.13 00:50
      저... Application탭에서 색을 바꾸는 부분은 없는데.. 뭘 말씀 하시는지... 잘몰겠떠염.. 상세히점......
    • 최용일
      2002.06.13 01:47
      아이콘 칼라바꾸는 것은 다른 툴로 해야죠... 델파이 이미지에디터나 마이크로안젤로같은... 쩝 제 말은...
    • 이현철
      2002.06.16 00:09
      Ping 소스를 함수 형식으로 만들어 보세요. Function isPing(IpAddress:String):Boolean begin  ...
    • 성대현
    • 2002.06.12 21:40
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김은영
    • 2002.06.12 21:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2002.06.13 03:21
      안녕하세요. 전 질문하고 데이터가 또 틀리네요. packed라해도 변환하는데는 아무런 문제가 없어요 va...
    • 이동현
    • 2002.06.12 21:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김지엽
      2002.06.12 22:43
      ALTER TABLE 테이블명 DROP 컬럼명
    • 염상철
      2002.06.19 19:46
      Group Band쓰시면..되는데..
    • 김광호
    • 2002.06.12 21:09
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
    • 2002.06.12 20:56
    • 4 COMMENTS
    • /
    • 0 LIKES
    • KDDG_zzang
      2002.06.12 21:01
         if key = vk_Next then begin       key := word(#0);&nbs...
    • 아폴론
      2002.06.13 00:27
      procedure TFm102.Ne_gjmnKeyDown(Sender: TObject; var Key: Word;   Shift: TShiftStat...
    • KDDG_zzang
      2002.06.13 02:18
      죄송한데요. 질문이 잘 이해가 안 되요. ^^;; 원하시는 결과가 무엇인지를 다시 한번 자세하게 설명 부...
    • 아폴론
      2002.06.13 04:38
      procedure TFm102.Ne_gjmnKeyDown(Sender: TObject; var Key: Word;   Shift: TShiftState); ...
    • 김진철
    • 2002.06.12 20:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 곰다방~미스김
      2002.06.12 22:38
      휠마우스 드라이버를 해당제품 만든곳에서 업데이트 받으세요.... 그럼 됩니다...... -_-; 아니면.........
    • GanJang
    • 2002.06.12 20:23
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 프리맨
      2002.06.13 00:52
      델파이도 호출되지 않는 루틴은 실행파일에 포함시키지 않으므로써 실행파일 크기를 상당히 줄입니다....
    • GanJang
      2002.06.13 02:02
      넵.. 지금 제가 만든 간단한 알람 프로그램이 실행파일 사이즈가.. 500kb 를.. 넘어가고 있습니다. -_=;...
    • 프리맨
      2002.06.13 02:42
      소스를 보시면 VCL 객체가 전혀 사용되지 않았습니다. 객체를 사용하지 않았으니 객체안의 가상메소드...
    • GanJang
      2002.06.13 03:19
      에고.. 손수 파일 다운로드 받으셔서,, 소스까지 확인해 주시고.. 정말 감사 T.T;; 월드 컵.. ...
    • 이은호
    • 2002.06.12 19:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2002.06.18 07:05
      음 저는 DirectShow하는 방법 뿐이 몰라서..^^;; 우선 디바이스의 포인터를 얻은후 ... KSProperty얻고...
    • 이동현
    • 2002.06.12 19:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하기
      2002.06.18 02:34
      '[id] = '+QuotedStr(msg1)  AND '[password] ='+QuotedStr(msg2); 'Field명1 = ' + Value...
    • 윤도상
    • 2002.06.12 19:08
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.06.12 19:44
      Oracle Net setting을 먼저 하셔야 합니다. setting하면 서비스이름인가 하는것을 만들거든요.... 그것을...
    • 윤도상
      2002.06.12 20:38
      오라클은 폴더 또는 파일명에 ( 가 포함되어있으면 안됩니다. 혹 다른 문자도 안되는지는 모르겠네요., ...
    • 윤도상
      2002.06.12 20:33
      BDE에서는 데이터베이스 명에서 더블클릭해서 사용자 이름과 패스워드를 주면 로긴이 됩니다. 그리고 델...
    • 김수경
      2002.06.12 19:11
      아래와 같이 처리해 보세요.   1. F7(Trace Into), F8(Step Over) 키를 이용해서 단계적으로 ...
    • 이영주
      2002.06.12 19:18
      감사합니다.. 아래와 같이 해보았는데염.... 1번은 전혀 소용이 없어염.. 키를 누르자마자 cpu창이 뜨...
    • 김수경
      2002.06.13 00:33
      2 번이 올바르게 실행된다면 Delphi엔 문제가 없는 것 같습니다. 단계별로 Debugging이 불가능 하다면 Ful...
    • 이영주
      2002.06.13 00:57
      저 우선 감사합니다.. ^^; full debug mode라는 건 없구염.. Project/Option/Compiler 쪽에 있는 모든 ...
    • 나그네
    • 2002.06.12 18:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.06.12 18:58
      받는 쪽 컴터의 통신 Buffer가 가득 찬 경우에 자료를 보낼 경우 자료가 제대로 전송되지 않습니다(이런 ...
    • 장명선
      2002.06.12 18:53
      에공 에공 아직까지 안되셨나부네요 어떤 기계인지는 모르지만 디기 까다롭네요 혹 메뉴얼같은게 있으...
    • 김관식
    • 2002.06.12 12:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하기
      2002.06.18 02:38
      if not Table1.FindKey([Input.Text]) then 이렇게 쓰셨는데... 아마도 FindKey = True or False 이런식으...
    • 이재식
      2002.06.12 12:44
      안녕하세요 실무상에서는 테이블 컴포넌트를 안쓰는것이 좋다고 전 개인적으로 생각합니다 ^^; 아무...
    • 박희경
    • 2002.06.12 10:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.10.09 00:03
      domain name server 이므로 범용서버를 찾으시면 가능합니다.
    • 강영원
    • 2002.06.12 10:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2002.06.12 12:36
      안녕하세요. 님이 원하시는 내용을 위해서 몇가지 추가를 해야하고 또 몇가지를 삭제해야 합니다. 스트...
    • 박영수
    • 2002.06.12 06:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.06.12 11:30
      안녕하세요. 최용일입니다. 흠~ 이 부분에서 Access violation에러가 날 이유는 없는데요... 한 줄씩 디...