안녕하세요 꼭 좀 도와주세요.
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;
왕초보민정 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;
쩝..
함 요렇게두 하면 더 좋을것 같아여... 도움이 됐는지 모르겠네여.. 구럼 이만..