![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
можно попробовать в каком-то редакторе и пересоздать индекс
не каждый редактор такое сделает ... нужно пробовать |
| Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
Lilu-MAKS (02.11.2012)
| ||
|
#17
|
|||
|
|||
|
ну нету у меня mdb БД у меня есть папку как к ней подключится в ADO а?
|
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Lilu-MAKS (02.11.2012)
| ||
|
#19
|
|||
|
|||
|
в процедуре удаления индекса он у меня на Errorio ругается! что там?
|
|
#20
|
||||
|
||||
|
Вместо провайдера JET ещё можно попробовать провайдер MSDASQL (он в TADOConnection по-умолчанию выбран).
А ещё можно отдельно установить родной провайдер для Visual FoxPro (VFPOLEDB). Скачать его можно с сайта Microsoft. |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Lilu-MAKS (02.11.2012)
| ||
|
#21
|
|||
|
|||
|
Всем привет! У меня тоже проблема связаная с DBF, а точнее с запросом на выборку.
Код:
dm.qry1.SQL.Add('SELECT * FROM 60000324');
dm.qry1.SQL.Add('WHERE codvr="'+codvr+'" AND curebeg="'+curebeg+'"');
dm.qry1.Open;Код:
Operator/operand type mismatch Код:
AND curebeg="'+curebeg+'" |
|
#22
|
||||
|
||||
|
Цитата:
Что содержится в переменной "curebeg"? Ты делаешь очистку старого запроса перед добавлением нового?: Код:
dm.qry1.SQL.Clear; Код:
// Вот так:
dm.qry1.SQL.Add('WHERE codvr='''+codvr+''' AND curebeg='''+curebeg+'''');
// Или лучше так:
dm.qry1.SQL.Add('WHERE codvr='+QuotedStr(codvr)+' AND curebeg='+QuotedStr(curebeg));
// Или так:
dm.qry1.SQL.Add(Format('WHERE codvr=%s AND curebeg=%s', [QuotedStr(codvr), QuotedStr(curebeg)]));Код:
dm.qry1.SQL.Add('WHERE codvr=:codvr AND curebeg=:curebeg');
dm.qry1.Parameters.ParamByName('codvr').Value := codvr;
dm.qry1.Parameters.ParamByName('curebeg').Value := curebeg; |
|
#23
|
|||
|
|||
|
Цитата:
Код:
procedure TForm1.btn2Click(Sender: TObject);
var
i:Integer;
codvr,curebeg:string;
begin
dm.qry1.Active := True;
pb1.Position := 0;
pb1.Max := dm.qry1.RecordCount;
for i:=1 to dm.qry1.RecordCount do
begin
codvr := dm.qry1.FieldByName('codvr').AsString;
curebeg := dm.qry1.FieldByName('curebeg').AsString;
if dblDoctor.Checked then
begin
dm.qry1.SQL.Clear;
dm.qry1.SQL.Add('SELECT * FROM 60000324');
dm.qry1.SQL.Add('WHERE codvr="'+codvr+'" AND curebeg="'+curebeg+'"');
dm.qry1.Open;
if dm.qry1.RecordCount > 1 then
begin
mmo1.Lines.Add(dm.qry1.FieldByName('fio').AsString+'|Дубль посещения!!!')
end;
end;
pb1.Position := i;
dm.qry1.Next;
end;
end; |
|
#24
|
||||
|
||||
|
Цитата:
Обрати внимание что "dm.qry1.Active := True;" абсолютно одно и то же что и "dm.qry1.Open;" Значит вначале ты выполняешь SQL-запрос (какой - неизвестно - тот который последним был загружен в "dm.qry1.SQL"). А потом проходишься в цикле по всем записям из этого запроса. Но внутри цикла ты используешь тот же самый qry1 для совершенно других запросов из-за чего твой цикл не может нормально продолжать выполнение. |
|
#25
|
|||
|
|||
|
Цитата:
|
|
#26
|
||||
|
||||
|
Цитата:
Код:
dm.qry2.SQL.Add('WHERE codvr=:codvr AND curebeg=:curebeg');
dm.qry2.Parameters.ParamByName('codvr').Value := codvr;
dm.qry2.Parameters.ParamByName('curebeg').Value := StrToDateTime(curebeg); |
|
#27
|
|||
|
|||
|
Цитата:
![]() |
|
#28
|
||||
|
||||
|
Цитата:
Код:
var
.....
curebeg: TDateTime; // Здесь сразу объявляем переменную как Дата/Время, а не строка
begin
.....
curebeg := dm.qry1.FieldByName('curebeg').AsDateTime; // И здесь получаем значение поля как Дата/Время, а не строка
.....
dm.qry2.Parameters.ParamByName('curebeg').Value := curebeg; // Тогда здесь не нужно преобразовывать строку в Дата/ВремяТакже у меня есть подозрение, что выбрать записи "у которых дубли" можно одним единственным запросом. Правда я не могу сказать каким, так как ты не показывал текст первого запроса. |