Вопрос № 24325: Здравствуйте Ув. эксперты!!!
Подскажите, пожалуйста, как решить следующую проблему и почему она возникает.
Есть приложение, которое напрямую работает с таблицей Paradox 7 – реализовано через ADO. При старте программа создает DSN. Так вот проб...Вопрос № 24335: Программа работает с таблицами dbf через БДЕ.
Нужно установить фильтр по вхождению строки в подстроку - как это сделать.
например по фильтру FName = 'ок'
должно остаться ОКно
подОКонник
стОК вобщем все записи в которых соде...Вопрос № 24339: Уважаемые эксперты, подскажите плз. как в DBGrid сделать одну колонку нумерованной от 1 до ...., чтобы при вставке-удалении либо сортировке записей нумерация обновлялась и оставалась непрерывной.
если можна то фрагмент кода и оч. желательно для C...Вопрос № 24347: Спасибо за ответы на вопрос 24335 !
Решил использовать Query с запросами
И опять проблема: Как составить запрос не зависящий от регистра ?
Where FName Like 'ок'
Что бы выводились вхождения ок и ОК и Ок и оК
причем значен...
Вопрос № 24.325
Здравствуйте Ув. эксперты!!!
Подскажите, пожалуйста, как решить следующую проблему и почему она возникает.
Есть приложение, которое напрямую работает с таблицей Paradox 7 – реализовано через ADO. При старте программа создает DSN. Так вот проблема заключается в том, что если на машине установлено Delphi то программа работает замечательно … но если Delphi нет то выпадает окошко следующего содержания: [Microsoft][Драйвер ODBC Paradox] Внешняя таблица не имеет предполагаемы формат.
Может, кто знает, в чем здесь проблема или где я дал ляп?
Если есть хотя бы какая-то идея, то обязательно пишите!!!
Заранее благодарен!!!
Отвечает: John Freeman
Здравствуйте, Силантьев Евгений Александрович!
А ты уверен что через ADO?
Скорее через BDE->ADO...
Идея - читай Delphi FAQ - для того, чтобы таскать с собой BDE достаточно 3 файлов или что-то похожее.
--------- You're trying to take me They trying to make me This is the only Gives me the only thing Tired of lying, I'm tired of lying The only thing I inderstand is what I feel...
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 01.08.2005, 00:43
Отвечает: sir henry
Здравствуйте, Силантьев Евгений Александрович!
Вы дали ляп в том, что используете ADO через ODBC драйвер и не установили драйвер ODBC для Paradox.
При установке Delphi драйвер для Paradox устанавливается вместе с ним.
Загрузить набор драйверов можно здесь:
http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c
К сожалению провайдера для OLE DB Paradox я не нашел (а может быть его и нет), попытайтесь сами. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.08.2005, 07:18 Оценка за ответ: 3 Комментарий оценки: Ну во первых: Microsoft Data Access Components, аналогичные тем компонентам, что имеются в Windows XP!!! Во-вторых: А скажем Driver do Microsoft Paradox - это не драйвер ODBC для Paradox?
Вопрос № 24.335
Программа работает с таблицами dbf через БДЕ.
Нужно установить фильтр по вхождению строки в подстроку - как это сделать.
например по фильтру FName = 'ок'
должно остаться ОКно
подОКонник
стОК вобщем все записи в которых содержиться эта подстрока. По моей установке FName = QuotedStr(Edit1.Text + '*')
оставляет только записи начинающиеся на ОК
Через Halcyon получается, но он глючит...
Срочно нужно !!! Горю !!! Принимаются любые советы !!!
Заранее ВСЕМ благодарен !
Отправлен: 01.08.2005, 09:23
Вопрос задал: Sniffer (статус: Студент)
Всего ответов отправлено: 3
Отвечает: Kazakh
Здравствуйте, Sniffer!
По-моему, если правильно поня, то нужно всего лишь исправить строку
Ответ отправил: Kazakh (статус: 1-ый класс)
Отправлен: 01.08.2005, 09:33
Отвечает: Rusland
Здравствуйте, Sniffer!
Если ты используешь компонент TTable, то ничего не поделаешь, фильтр у него умеет искать только записи которые начинаются на заданное слово. Чтобы фильтровать по типу '*ok*' необходимо использовать TQuery и самому делать sql-запросы. Удачи.
--------- Тише едешь, дальше будешь... от того места куда едешь
Ответ отправил: Rusland (статус: 9-ый класс)
Отправлен: 01.08.2005, 09:45 Оценка за ответ: 5 Комментарий оценки: Спасибо !
Отвечает: sir henry
Здравствуйте, Sniffer!
Есть такое событие - OnFilterRecord, поместите в него следующее выражение:
Accept:=Pos('ОК', AnsiUpperCase(Table.Field))<>0;
Т.е. запись попадает на отображение только если переменная Accept равна True. В этом событии Вы можете применять ЛЮБЫЕ выражения, допустимые в Object Pascal (в отличие от свойства Filter, который довольно ограничен в своих возможностях).
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.08.2005, 10:31
Вопрос № 24.339
Уважаемые эксперты, подскажите плз. как в DBGrid сделать одну колонку нумерованной от 1 до ...., чтобы при вставке-удалении либо сортировке записей нумерация обновлялась и оставалась непрерывной.
если можна то фрагмент кода и оч. желательно для C++Builder 6 (в переводе с Delphi испытываю определенные проблемы)
знаю, что для этого нужно использовать OnDrawColumnCell, но как его использовать грамотно не знаю. Спасибо.
Отправлен: 01.08.2005, 11:02
Вопрос задал: Степанюк Александр (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: sir henry
Здравствуйте, Степанюк Александр!
Вы знаете, это относится отнюдь не к OnDrawColumnCell, а скорее к генерации автовычисляемого поля.
И, вдобавок, идите Вы с такой постановкой вопроса, в рассылку Билдера. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.08.2005, 17:46 Оценка за ответ: 1 Комментарий оценки: оч. содержательный ответ. мой вопрос к генерации вычисляемых полей не имеет абсолютно ни какого отношения, а насчет ресурсов по C++Builder - я бы с огромадным удовольствием, тока их на несколько порядков меньше чем по Делфи, поэтому и приходится приспосабливаться
Вопрос № 24.347
Спасибо за ответы на вопрос 24335 !
Решил использовать Query с запросами
И опять проблема: Как составить запрос не зависящий от регистра ?
Where FName Like 'ок'
Что бы выводились вхождения ок и ОК и Ок и оК
причем значение ок передаеться восле ввода его в Edit...
Отправлен: 01.08.2005, 13:23
Вопрос задал: Sniffer (статус: Студент)
Всего ответов отправлено: 4
Отвечает: Kazakh
Здравствуйте, Sniffer!
Примерно так
ADOQuery1.SQL.Text:=UpperCase(ADOQuery1.SQL.Text);
ADOQuery1.open;
Ответ отправил: Kazakh (статус: 1-ый класс)
Отправлен: 01.08.2005, 13:32
Отвечает: Rusland
Здравствуйте, Sniffer!
Поставь в опциях свойство foCaseInsensitive равное True. Не забудь сказать спасибо :)
--------- Тише едешь, дальше будешь... от того места куда едешь
Ответ отправил: Rusland (статус: 9-ый класс)
Отправлен: 01.08.2005, 14:19 Оценка за ответ: 4 Комментарий оценки: Спасибо, конечно. Но это свойство фильтра а я устовие ставлю в запросе ....
Отвечает: Denisss
Здравствуйте, Sniffer!
Внутри SQL запроса используйте функцию UPPER.
Например:
WHERE UPPER(FName) LIKE 'OK'
Ответ отправил: Denisss (статус: Студент)
Отправлен: 01.08.2005, 16:08
Отвечает: sir henry
Здравствуйте, Sniffer!
Для этого нужно привести значение Edit и значение поля к одному регистру с помощью, например, AnsiUpperCase(). :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.08.2005, 17:37 Оценка за ответ: 5 Комментарий оценки: Спасибо... Уже сделал... Просто не думал что SQL BDE поддерживает такие функции... :-)