Q&A

  • 급!!!!!!날짜관련 질문입니다. mask 에디터에서요
안녕하세요 꼭 좀 도와주세요.

db는 파라독스이고 날짜형으로 지정 했습니다. 그리고 code는 숫자형(i)으로 지정했는데

아래처럼 화면에 뿌리려는데 오류가 나고, db에 저장 방법을 모르겠습니다. 좀 도와주세요 ㅜ.ㅜ

procedure TB03Form.EdCodeChange(Sender: TObject);

var Q1:TQuery;

sSql:String;

begin

//이미 등록된 자료이면 내용을 보여준다.

Q1 := TQuery.Create(Self);

Q1.DataBaseName := AliasName;

Q1.Sql.Clear;

Q1.Sql.Add('Select * From CustCode Where Code = '''+TRIM(EdCode.TEXT)+'''');

Q1.Sql.Add(sSql);

Q1.Open;

Edname.Text := Q1.FieldByName('Name').AsString;

Edno.Text := Q1.FieldByName('No').AsString;

EdBDate.Text := Q1.FieldByName('BDate').AsString;

EdAddrNo.Text := Q1.FieldByName('AddrNo').AsString;

EdAddr1.Text := Q1.FieldByName('Addr1').AsString;

EdAddr2.Text := Q1.FieldByName('Addr2').AsString;

EdTel1.Text := Q1.FieldByName('Tel1').AsString;

EdTel2.Text := Q1.FieldByName('Tel2').AsString;

EdFDate.Text := Q1.FieldByName('FDate').AsString;

Q1.Close;

Q1.Free;

-----------------------------------------------

아래는 입력 루틴입니다. 꼭 좀 도와주세요

begin

sSql := 'Insert into CustSm (Code,Name,No,BDate,AddrNo,Addr1,Addr2,Tel1,Tel2,FDate) '+

' Values (:PCode,:PName,:PNo,:PBDate,:PAddrNo,:PAddr1,:PAddr2,:PTel1,:PTel2,:PFDate) ';

Q1.Sql.Add(sSql);

Q1.ParamByName('PCode').asstring := Trim(EdCode.Text);

Q1.ParamByName('PName').asstring := Trim(EdName.Text);

Q1.ParamByName('PNo').asstring := Trim(EdNo.Text);

Q1.ParamByName('PBDate').asDate := StrToDate(EdBDate.Text);

Q1.ParamByName('PAddrNo').asstring := Trim(EdAddrNo.Text);

Q1.ParamByName('PAddr1').asstring := Trim(EdAddr1.Text);

Q1.ParamByName('PAddr2').asstring := Trim(EdAddr2.Text);

Q1.ParamByName('PTel1').asstring := Trim(EdTel1.Text);

Q1.ParamByName('PTel2').asstring := Trim(EdTel2.Text);

Q1.ParamByName('PFDate').asDate := StrToDate(EdFDate.Text);

end;

2  COMMENTS
  • Profile
    모름이 2001.04.17 03:20
    제가 소스좀 고쳐 볼께여... ^^;

    왕초보민정 wrote:

    > 안녕하세요 꼭 좀 도와주세요.

    > db는 파라독스이고 날짜형으로 지정 했습니다. 그리고 code는 숫자형(i)으로 지정했는데

    > 아래처럼 화면에 뿌리려는데 오류가 나고, db에 저장 방법을 모르겠습니다. 좀 도와주세요 ㅜ.ㅜ

    > procedure TB03Form.EdCodeChange(Sender: TObject);

    var Q1:TQuery;

    sSql:String; // 여기선 이 변수는 쓰지 않는데..? 흐미.. 설정하신

    이유가 모르겠어여...ㅠ,.ㅠ

    begin

    //이미 등록된 자료이면 내용을 보여준다.

    Q1 := TQuery.Create(Self);

    Q1.DataBaseName := AliasName;



    with q1 do begin

    Sql.Clear;

    Sql.Add('Select * From CustCode Where Code = :edcode);

    parmbyname('edcode').assting := TRIM(EdCode.TEXT);

    //Sql.Add(sSql); <--- 군데 이건 뭐죠..? 조건문도 아닐테고...흐미..

    우선 주석 처리

    Open;

    Edname.Text := FieldByName('Name').AsString;

    Edno.Text := FieldByName('No').AsString;

    EdBDate.Text := FieldByName('BDate').AsString;

    EdAddrNo.Text := FieldByName('AddrNo').AsString;

    EdAddr1.Text := FieldByName('Addr1').AsString;

    EdAddr2.Text := FieldByName('Addr2').AsString;

    EdTel1.Text := FieldByName('Tel1').AsString;

    EdTel2.Text := FieldByName('Tel2').AsString;

    EdFDate.Text := FieldByName('FDate').AsString;

    Close;

    Free;

    end;

    > -----------------------------------------------

    아래는 입력 루틴입니다. 꼭 좀 도와주세요

    begin

    sSql := 'Insert into CustSm (Code,Name,No,BDate,AddrNo,Addr1,Addr2,Tel1,Tel2,FDate) '+

    ' Values (:PCode,:PName,:PNo,:PBDate,:PAddrNo,:PAddr1,:PAddr2,:PTel1,:PTel2,:PFDate) ';

    with q1 do begin

    Sql.Add(sSql);

    ParamByName('PCode').asstring := Trim(EdCode.Text);

    ParamByName('PName').asstring := Trim(EdName.Text);

    ParamByName('PNo').asstring := Trim(EdNo.Text);

    ParamByName('PBDate').asDate := StrToDate(EdBDate.Text);

    ParamByName('PAddrNo').asstring := Trim(EdAddrNo.Text);

    ParamByName('PAddr1').asstring := Trim(EdAddr1.Text);

    ParamByName('PAddr2').asstring := Trim(EdAddr2.Text);

    ParamByName('PTel1').asstring := Trim(EdTel1.Text);

    ParamByName('PTel2').asstring := Trim(EdTel2.Text);

    ParamByName('PFDate').asDate := StrToDate(EdFDate.Text);

    execsql; // 이걸해야 insert문이 먹어염...흐미 군데 updateobject에

    updatesql 설정했죠.. 안하믄 안되여...

    end;

    end;



    군데여...

    이루틴이 edcodechange에서 다 도는건 아니져..

    음냥..저기여 문제점..

    우선 첫번째 소스는 입력하는 에디트에서 변화가 생길때마다 sql문이 돌아가는데..

    그러면 한자한자 입력할때 쿼리를 돌리면 흐미..ㅡㅡ;

    차라리 입력에디트에 key값을 넣어서 엔터키를 치면 돌리다던지.. 구렇게 해야 하지

    않을까..?

    그럼 제가 한번 소스를 만들어 볼께여.. 저도 잘은 모르지만 이렇게 해야하지 않을까

    싶어서여..

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

    var

    sqlstr : string;

    begin

    if key = #13 then begin // 엔터키가 눌러졌다면.. 쿼리를 돌린다..

    sqlstr := 'Select * From CustCode Where Code = :edcode';

    with query1 do begin

    close;

    sql.clear;

    sql.add(sqlstr);

    parmbyname('edcode').assting := TRIM(EdCode.TEXT);

    open;

    // 참여기서 조건문 하나 추가 만약 데이타가 있다면 에디트에 보여준다..

    if fieldbyname('code').asstring <> '' then begin // null이 아닌지 비교

    Edname.Text := FieldByName('Name').AsString; // null이 아니면 데이타

    Edno.Text := FieldByName('No').AsString; // 가 있으니 에디트

    EdBDate.Text := FieldByName('BDate').AsString;// 박스에 넣는다.

    EdAddrNo.Text := FieldByName('AddrNo').AsString;

    EdAddr1.Text := FieldByName('Addr1').AsString;

    EdAddr2.Text := FieldByName('Addr2').AsString;

    EdTel1.Text := FieldByName('Tel1').AsString;

    EdTel2.Text := FieldByName('Tel2').AsString;

    EdFDate.Text := FieldByName('FDate').AsString;

    end else exit;

    end;

    end;

    procedure TForm1.FormActivate(Sender: TObject);

    begin

    Query1 := TQuery.Create(Self); // 데이터베이스 설정..

    Query1.DataBaseName := AliasName;

    end;

    procedure TForm1.Button1Click(Sender: TObject);

    var

    sqlstr : string;

    begin

    sqlstr := 'Insert into CustSm (Code,Name,No,BDate,AddrNo,Addr1,Addr2,Tel1,Tel2,'+

    'FDate) + Values :PCode,:PName,:PNo,:PBDate,:PAddrNo,:PAddr1,:PAddr2,'+

    ':PTel1,:PTel2,:PFDate) ';



    with query1 do begin

    Sql.Add(sSql);

    ParamByName('PCode').asstring := Trim(EdCode.Text);

    ParamByName('PName').asstring := Trim(EdName.Text);

    ParamByName('PNo').asstring := Trim(EdNo.Text);

    ParamByName('PBDate').asDate := StrToDate(EdBDate.Text);

    ParamByName('PAddrNo').asstring := Trim(EdAddrNo.Text);

    ParamByName('PAddr1').asstring := Trim(EdAddr1.Text);

    ParamByName('PAddr2').asstring := Trim(EdAddr2.Text);

    ParamByName('PTel1').asstring := Trim(EdTel1.Text);

    ParamByName('PTel2').asstring := Trim(EdTel2.Text);

    ParamByName('PFDate').asDate := StrToDate(EdFDate.Text);

    execsql;

    end;

    end;

    쩝..

    함 요렇게두 하면 더 좋을것 같아여... 도움이 됐는지 모르겠네여.. 구럼 이만..

  • Profile
    왕초보민정 2001.04.17 04:32
    정성스런 답변에 감사드립니다. 그런데 모르는게 넘 많아서 님 메일주소로 멜 발송했습니다.

    확인좀 해주세요 ^^ 파일 첨부해서 여기론 못올리네요.

    그리고 이런 오류가 나네요. 참고로 BDate는 mask edit입니다

    [Error] B_03Form.pas(361): Incompatible types: 'TDateTime' and 'String'



    모름이 wrote:

    > 제가 소스좀 고쳐 볼께여... ^^;

    > 왕초보민정 wrote:

    > > 안녕하세요 꼭 좀 도와주세요.

    > > db는 파라독스이고 날짜형으로 지정 했습니다. 그리고 code는 숫자형(i)으로 지정했는데

    > > 아래처럼 화면에 뿌리려는데 오류가 나고, db에 저장 방법을 모르겠습니다. 좀 도와주세요 ㅜ.ㅜ

    > > procedure TB03Form.EdCodeChange(Sender: TObject);

    > var Q1:TQuery;

    > sSql:String; // 여기선 이 변수는 쓰지 않는데..? 흐미.. 설정하신

    > 이유가 모르겠어여...ㅠ,.ㅠ

    > begin

    > //이미 등록된 자료이면 내용을 보여준다.

    > Q1 := TQuery.Create(Self);

    > Q1.DataBaseName := AliasName;

    >

    > with q1 do begin

    > Sql.Clear;

    > Sql.Add('Select * From CustCode Where Code = :edcode);

    > parmbyname('edcode').assting := TRIM(EdCode.TEXT);

    > //Sql.Add(sSql); <--- 군데 이건 뭐죠..? 조건문도 아닐테고...흐미..

    > 우선 주석 처리

    > Open;

    > Edname.Text := FieldByName('Name').AsString;

    > Edno.Text := FieldByName('No').AsString;

    > EdBDate.Text := FieldByName('BDate').AsString;

    > EdAddrNo.Text := FieldByName('AddrNo').AsString;

    > EdAddr1.Text := FieldByName('Addr1').AsString;

    > EdAddr2.Text := FieldByName('Addr2').AsString;

    > EdTel1.Text := FieldByName('Tel1').AsString;

    > EdTel2.Text := FieldByName('Tel2').AsString;

    > EdFDate.Text := FieldByName('FDate').AsString;

    > Close;

    > Free;

    > end;

    > > -----------------------------------------------

    > 아래는 입력 루틴입니다. 꼭 좀 도와주세요

    > begin

    > sSql := 'Insert into CustSm (Code,Name,No,BDate,AddrNo,Addr1,Addr2,Tel1,Tel2,FDate) '+

    > ' Values (:PCode,:PName,:PNo,:PBDate,:PAddrNo,:PAddr1,:PAddr2,:PTel1,:PTel2,:PFDate) ';

    > with q1 do begin

    > Sql.Add(sSql);

    > ParamByName('PCode').asstring := Trim(EdCode.Text);

    > ParamByName('PName').asstring := Trim(EdName.Text);

    > ParamByName('PNo').asstring := Trim(EdNo.Text);

    > ParamByName('PBDate').asDate := StrToDate(EdBDate.Text);

    > ParamByName('PAddrNo').asstring := Trim(EdAddrNo.Text);

    > ParamByName('PAddr1').asstring := Trim(EdAddr1.Text);

    > ParamByName('PAddr2').asstring := Trim(EdAddr2.Text);

    > ParamByName('PTel1').asstring := Trim(EdTel1.Text);

    > ParamByName('PTel2').asstring := Trim(EdTel2.Text);

    > ParamByName('PFDate').asDate := StrToDate(EdFDate.Text);

    > execsql; // 이걸해야 insert문이 먹어염...흐미 군데 updateobject에

    > updatesql 설정했죠.. 안하믄 안되여...

    > end;

    > end;

    >

    > 군데여...

    > 이루틴이 edcodechange에서 다 도는건 아니져..

    > 음냥..저기여 문제점..

    > 우선 첫번째 소스는 입력하는 에디트에서 변화가 생길때마다 sql문이 돌아가는데..

    > 그러면 한자한자 입력할때 쿼리를 돌리면 흐미..ㅡㅡ;

    > 차라리 입력에디트에 key값을 넣어서 엔터키를 치면 돌리다던지.. 구렇게 해야 하지

    > 않을까..?

    > 그럼 제가 한번 소스를 만들어 볼께여.. 저도 잘은 모르지만 이렇게 해야하지 않을까

    > 싶어서여..

    > procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

    > var

    > sqlstr : string;

    > begin

    > if key = #13 then begin // 엔터키가 눌러졌다면.. 쿼리를 돌린다..

    > sqlstr := 'Select * From CustCode Where Code = :edcode';

    > with query1 do begin

    > close;

    > sql.clear;

    > sql.add(sqlstr);

    > parmbyname('edcode').assting := TRIM(EdCode.TEXT);

    > open;

    > // 참여기서 조건문 하나 추가 만약 데이타가 있다면 에디트에 보여준다..

    > if fieldbyname('code').asstring <> '' then begin // null이 아닌지 비교

    > Edname.Text := FieldByName('Name').AsString; // null이 아니면 데이타

    > Edno.Text := FieldByName('No').AsString; // 가 있으니 에디트

    > EdBDate.Text := FieldByName('BDate').AsString;// 박스에 넣는다.

    > EdAddrNo.Text := FieldByName('AddrNo').AsString;

    > EdAddr1.Text := FieldByName('Addr1').AsString;

    > EdAddr2.Text := FieldByName('Addr2').AsString;

    > EdTel1.Text := FieldByName('Tel1').AsString;

    > EdTel2.Text := FieldByName('Tel2').AsString;

    > EdFDate.Text := FieldByName('FDate').AsString;

    > end else exit;

    > end;

    > end;

    > procedure TForm1.FormActivate(Sender: TObject);

    > begin

    > Query1 := TQuery.Create(Self); // 데이터베이스 설정..

    > Query1.DataBaseName := AliasName;

    > end;

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > sqlstr : string;

    > begin

    > sqlstr := 'Insert into CustSm (Code,Name,No,BDate,AddrNo,Addr1,Addr2,Tel1,Tel2,'+

    > 'FDate) + Values :PCode,:PName,:PNo,:PBDate,:PAddrNo,:PAddr1,:PAddr2,'+

    > ':PTel1,:PTel2,:PFDate) ';

    >

    > with query1 do begin

    > Sql.Add(sSql);

    > ParamByName('PCode').asstring := Trim(EdCode.Text);

    > ParamByName('PName').asstring := Trim(EdName.Text);

    > ParamByName('PNo').asstring := Trim(EdNo.Text);

    > ParamByName('PBDate').asDate := StrToDate(EdBDate.Text);

    > ParamByName('PAddrNo').asstring := Trim(EdAddrNo.Text);

    > ParamByName('PAddr1').asstring := Trim(EdAddr1.Text);

    > ParamByName('PAddr2').asstring := Trim(EdAddr2.Text);

    > ParamByName('PTel1').asstring := Trim(EdTel1.Text);

    > ParamByName('PTel2').asstring := Trim(EdTel2.Text);

    > ParamByName('PFDate').asDate := StrToDate(EdFDate.Text);

    > execsql;

    > end;

    > end;

    > 쩝..

    > 함 요렇게두 하면 더 좋을것 같아여... 도움이 됐는지 모르겠네여.. 구럼 이만..