안녕하세요
작업을 하다보니 어려움점이 있어 질문을 합니다.
많은 답변을 부탁 드립니다.
델파이4.0입니다.
SQL 7.0 입니다.
원본 데이타 베이스에서 덤핑을 하고나서 각각의 테이블(Matr_Code)에
10개의 필드를 추가를 하였습니다.아래 필드는 필드 두개만 나타내었습니다.
그런데 Next 버튼을 클릭하면 코드가 같으며 사이즈 순서대로
진행을 해야하는데 AAA에서BBB로 넘어 갑니다.
그리고 Prior(이전) 버튼을 클릭하면 현재 값만 계속 퀴리을 합니다.
코드가 같으며 현재 사이즈 보다 작은 사이즈 값을 가져와야하는데
그렇게 되지가 않습니다.
무슨 문제가 있습니까
*** CODE,SIZE : DATA TYPE=varchar
type이 숫자형이 이 아니라서 그런가????
필드가 추가 되기 전에는 이전,다음이 순서대로 잘되었습니다.
MATR_CODE MATR_SIZE
AAA 1.0*0.5*0.2
AAA 1.0*0.5*0.3
AAA 1.0*0.5*0.4
AAA 1.0*0.7*0.1
AAA 1.0*0.7*0.2
AAA 2.0*1.0*0.1
AAA 2.0*2.0*0.1
BBB 1.0*0.5*0.2
BBB 1.0*0.5*0.3
BBB 1.0*0.5*0.4
BBB 1.0*0.7*0.1
BBB 1.0*0.7*0.2
BBB 2.0*1.0*0.1
BBB 2.0*2.0*0.1
다음(Next) 소스 입니다.
procedure TFmatrcode.bpriorClick(Sender: TObject);
begin
with QTotal do
begin
Close;
Sql.Clear;
Sql.Add('select a.* from Matr_Code a where (a.Matr_Code + a.Matr_Size)');
Sql.Add(' = (select Min(b.Matr_Code + b.MAtr_Size) from Matr_Code b where
(b.Matr_Code + b.MAtr_Size) > :p1)');//이부분에서 순서대로
BBB 1.0*0.5*0.2 사이즈를 못읽어옴
PAramByNAme('p1').asstring:=flatEdit1.text + OldSize.caption;
open; // AAA 1.0*0.5*0.2//입력값
if QTotal.FieldByNAme('Matr_Code').asstring<>'' then
begin
FlatEdit1.text := FieldByNAme('MATR_CODE').asstring;
Old_Size.caption := FieldByNAme('MATR_SIZE').asstring;
end
else
Application.MessageBox(PChar('This is first code !'),
'Confirm',mb_Ok+mb_iconwarning);
end;
end;
이전 (prior) 소스 입니다.
procedure TFmatrcode.bpriorClick(Sender: TObject);
begin
with QTotal do
begin
Close;
Sql.Clear;
Sql.Add('select a.* from Matr_Code a where (a.Matr_Code + a.Matr_Size)');
Sql.Add(' = (select max(b.Matr_Code + b.MAtr_Size) from Matr_Code b where
(b.Matr_Code + b.MAtr_Size) < :p1)');
PAramByNAme('p1').asstring:=flatEdit1.text + OldSize.caption;
open;
if QTotal.FieldByNAme('Matr_Code').asstring<>'' then
begin
FlatEdit1.text := FieldByNAme('MATR_CODE').asstring;
Old_Size.caption := FieldByNAme('MATR_SIZE').asstring;
end
else
Application.MessageBox(PChar('This is first code !'),
'Confirm',mb_Ok+mb_iconwarning);
end;
end;
감사 합니다.