Q&A

  • 테이블 삽입,삭제,수정
아래소스인데여

리스박스에서는 자료가 처리되는데 테이블에는 변화가 전혀 없음니다.

그리구 버튼클릭하면 자료처리결과를 바로 볼수 있으면 좋겠는데 리스트박스에 변화된자료를 볼려면 tabsheet를 다른데 갔다 와야 보이거든여

어케하면 좋을까여....

부탁함당.. 쩝

그럼 수고하시구여....



procedure TForm1.TabSheet1Show(Sender: TObject);

var

data1 : string; // 사용자명

data2 : string; // 비밀번호

data3 : string; // 사용자종류 코드

data4 : string; // 사용자종류



begin

RadioButton2.checked := true;

RadioButton4.checked := true;

edit3.text := '2';

edit4.text := '1';



with table1 do



begin



try

first;

listbox1.clear;

while not eof do

begin



data1 := fieldbyname('user_name').asstring; // 사용자명

data2 := fieldbyname('user_password').asstring; // 비밀번호

data3 := fieldbyname('user_kind').asstring; // 운영자종류 코드





if data3 = '1' then

data4 := '주사령'

else if data3 = '2' then

data4 := '선사령'

else data4 := '보수사령';



listbox1.Items.add(data1 + #32 + data2 + #32 + data4);

next;



end;

except

cancel;

raise;



end;



end;



end;







procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);



var

size1, size2, size3, tab_pos : integer;

col1, col2, col3 : trect;

d : string;





begin

size1 := 70;

size2 := 70;

size3 := 70;

col1 := rect;

col2 := rect;

col3 := rect;

col1.right := size1;

col2.Left := col1.right + 1;

col2.right := col2.left + size2;

col3.left := col2.Right + 1;

col3.right := col3.left + size3;

d := tlistbox(control).items[index];



with tlistbox(control).canvas do

begin

fillrect (rect);

tab_pos := pos(#32, d);

textrect(col1, col1.left, col1.top, copy(d, 1, tab_pos - 1));



d := copy(d, tab_pos + 1, length(d) - tab_pos + 1);

tab_pos := pos(#32, d);

textrect(col2, col2.left, col2.top, copy(d , 1, tab_pos - 1));



d := copy(d, tab_pos + 1, length(d) - tab_pos + 1);

textrect(col3, col3.left, col3.top, d);

end;



end;



function substr(buf : string; const position : integer;

const delimiter : string = ',') : string;

var

strlen, zeichenidx, subidx, kompos : integer;



begin

result := '';

buf := buf + delimiter;

strlen := length(buf);

zeichenidx := 1;

subidx := 1;

while zeichenidx <= strlen do

begin

kompos := pos(delimiter, buf);

if kompos <> 0 then

begin

if subidx = position then

begin

result := copy(buf, 1, kompos - 1);

break;

end;

delete(buf, 1, kompos);

inc(subidx);

end;

inc(zeichenidx);

end;

end;







procedure TForm1.ListBox1Click(Sender: TObject);

var

i : integer;

buf, id, pw, kind, kindint : string;

begin

i := listbox1.itemindex;

buf := listbox1.Items[i];

id := substr(buf, 1, #32);

pw := substr(buf, 2, #32);

kind := substr(buf, 3, #32);

if kind = '주사령' then

kindint := '1'

else if kind = '선사령' then

kindint := '2'

else if kind = '보수사령' then

kindint := '3';

edit1.text := id;

edit2.text := pw;

edit3.text := kindint;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

if (edit1.text <> '') and (edit2.text <> ' ') then



begin



case strtoint(edit4.text) of

1 :

begin



table1.SetKey;

table1.FieldByName('user_name').asstring := edit1.text;

if not table1.gotokey then

begin

table1.append;

table1.fieldbyname('user_name').asstring := edit1.text;

table1.fieldbyname('user_password').asstring := edit2.text;

table1.fieldbyname('user_kind').asstring := edit3.text;

table1.post;



end



else

showmessage('이미 있습니다.');

listbox1.Refresh;

end;





2 :

begin

table1.first;



table1.SetKey;

table1.FieldByName('user_name').asstring := edit1.text;

if table1.gotokey then

begin

table1.edit;

table1.fieldbyname('user_name').asstring := edit1.text;

table1.fieldbyname('user_password').asstring := edit2.text;

table1.fieldbyname('user_kind').asstring := edit3.text;

table1.post;



end



else

showmessage('사용자가 없습니다.');

listbox1.Refresh;

end;





3 :

begin

table1.SetKey;

table1.FieldByName('user_name').asstring := edit1.text;

if table1.gotokey then

begin

table1.delete;



end

else

showmessage('사용자가 없습니다.');

end;





end;

end

else

showmessage('값을 입력하시요');

end;





end.



0  COMMENTS