![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Привет друзья.
Хочу чтоб Edit чистился при успешном завершении запросов. Но почему то пропадает результирующее множество из дбгрида когда я его чищю. Короче вот код из него будет яснее. Игрался с exit не помогло либо выборка либо чистый эдит Код:
procedure TBarcodeForm.Edit1Change(Sender: TObject);
var
Query:string;
Date:string;
Flag:bool;
begin
if (Edit1.Text='') and (Str='') then
begin
BarcodeForm.ADOQuery1.SQL.Clear;
BarcodeForm.ADOQuery1.SQL.Add('SELECT * FROM works');
BarcodeForm.ADOQuery1.Open;
label9.Caption:= countrec + IntToStr(BarcodeForm.Adoquery1.RecordCount);
end else begin
BarcodeForm.ADOQuery1.SQL.Clear;
BarcodeForm.ADOQuery1.SQL.Add('SELECT * FROM works WHERE cBarcode = :dd1_b');
BarcodeForm.ADOQuery1.Parameters.ParamByName('dd1_b').Value:= Edit1.Text;
BarcodeForm.ADOQuery1.Open;
Date := FormatDateTime('yyyy-mm-dd', Now);
Str:= Adoquery1.FieldByName('nKey').asstring;
label9.Caption:= 'ID: ' + Str;
//Flag:=false;
if (BarcodeForm.ADOQuery1.RecordCount > 0) and (Str <> '') then
begin
Query:='UPDATE works SET dJobDone = '''+ Date +''' WHERE nKey = ' + Str;
BarcodeForm.ADOQuery1.SQL.Clear;
BarcodeForm.ADOQuery1.SQL.Add(Query);
BarcodeForm.ADOQuery1.ExecSQL;
Query:='SELECT * FROM works WHERE nKey = ' + Str;
BarcodeForm.ADOQuery1.SQL.Clear;
BarcodeForm.ADOQuery1.SQL.Add(Query);
showmessage(BarcodeForm.ADOQuery1.SQL.Text);
BarcodeForm.ADOQuery1.Open;
//Flag:=true;
exit;
Str:='';
Edit1.Text:='';
end;
end;
end;Последний раз редактировалось aqula, 14.11.2012 в 19:38. |
|
#2
|
|||
|
|||
|
Помоему вообще работать не будет
по крайней мере я что то не уловлю смысл всех этих манипуляций. к чему вообще все это? у вас поиск только по 1 символу? или в едит сразу (насколько понимаб штрих-код) вбивается копи пастом или присвоением? ПС. А на Update еще Query отдельный не положить ли? Последний раз редактировалось Black Raider, 14.11.2012 в 20:08. |
|
#3
|
|||
|
|||
|
не по одному. Сканер штрих-кода работает как клава. В эдите вводится строка из n символов - я произвожу поиск по бд. и вывожу данные в дбгриде по этому коду. Далее я подношу еще раз к другому штрих-коду и чтоб эдит не замусоривать я его должен чистить после каждого считвания. вот
> ПС. А на Update еще Query отдельный не положить ли? Вторую адошку чтоли? Последний раз редактировалось aqula, 14.11.2012 в 21:59. |
|
#4
|
|||
|
|||
|
Цитата:
|
|
#5
|
||||
|
||||
|
а если так: (елси уж очистка нужно при удачном завершении всех запросов)
Код:
procedure TBarcodeForm.Edit1Change(Sender: TObject);
var
Date:string;
Flag:bool;
begin
if (Edit1.Text='') and (Str='')
then
begin
BarcodeForm.ADOQuery1.Close;
BarcodeForm.ADOQuery1.SQL.Text:='SELECT * FROM works';
try
BarcodeForm.ADOQuery1.Open;
Except
Exit;
end;
Label9.Caption:= CountRec + IntToStr(BarcodeForm.Adoquery1.RecordCount);
end
else
begin
BarcodeForm.ADOQuery1.Close;
BarcodeForm.ADOQuery1.SQL.Text:='SELECT * FROM works WHERE cBarcode = :dd1_b';
BarcodeForm.ADOQuery1.ParamByName('dd1_b').Value:= Edit1.Text;
try
BarcodeForm.ADOQuery1.Open;
Except
Exit;
end;
Date := FormatDateTime('yyyy-mm-dd', Now);
Str:= ADOQuery1.FieldByName('nKey').asString;
Label9.Caption:= 'ID: ' + Str;
if (BarcodeForm.ADOQuery1.RecordCount > 0) and (Str <> '')
then
begin
BarcodeForm.ADOQuery1.Close;
BarcodeForm.ADOQuery1.SQL.Text:='UPDATE works SET dJobDone = '''+ Date +''' WHERE nKey = ' + Str;
try
BarcodeForm.ADOQuery1.ExecSQL;
Except
Exit;
end;
BarcodeForm.ADOQuery1.Close;
BarcodeForm.ADOQuery1.SQL.Text:='SELECT * FROM works WHERE nKey = ' + Str;
try
BarcodeForm.ADOQuery1.Open;
Except
Exit;
end;
Str:='';
end;
end;
Edit1.Text:='';
end; |
|
#6
|
|||
|
|||
|
Нашел еще один способ.
... Edit1.SelectAll; End; Как таковой затирки нет, но при вводе новой строки прежняя стирается. |