Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 201
от 06.08.2005, 16:59

Администратор:Калашников О.А.
В рассылке:Подписчиков: 223, Экспертов: 40
В номере:Вопросов: 4, Ответов: 10


Вопрос № 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] Внешняя таблица не имеет предполагаемы формат.
Может, кто знает, в чем здесь проблема или где я дал ляп?
Если есть хотя бы какая-то идея, то обязательно пишите!!!
Заранее благодарен!!!
Отправлен: 01.08.2005, 00:21
Вопрос задал: Силантьев Евгений Александрович (статус: 2-ой класс)
Всего ответов отправлено: 2

Отвечает: 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!
По-моему, если правильно поня, то нужно всего лишь исправить строку

FName = QuotedStr(Edit1.Text + '*')
на
FName = QuotedStr('*'+Edit1.Text + '*')

Или я не неправильно понял?
Ответ отправил: 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 поддерживает такие функции... :-)


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное