|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
можно попробовать в каком-то редакторе и пересоздать индекс
не каждый редактор такое сделает ... нужно пробовать Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо 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; // Тогда здесь не нужно преобразовывать строку в Дата/Время Также у меня есть подозрение, что выбрать записи "у которых дубли" можно одним единственным запросом. Правда я не могу сказать каким, так как ты не показывал текст первого запроса. |