EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
LUCIAN Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
Как переписать правильно такой код
потому что,если выделенный текст заменить на такой ...Ttn.dato BETWEEN "_TextBox1.Text_" AND "_TextBox2.Text, то выдаёт ошибку компиляции, где TextBox1 и TextBox2 это TextBox куда будут вводится даты периода. |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Использовать параметры.
------------------ WBR, Igor |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
LUCIAN Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
Application-defined or object-defined error Исправлено 1 раз(а). Последнее : LUCIAN, 26.07.17 16:52 |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Цитата:Не бывает 31 месяца. ------------------ WBR, Igor |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
LUCIAN Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
И такой записи:
Application-defined or object-defined error |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну не знаю, я проверить не могу, т.к. эксель у меня 64-разрядный. А из фокса через ADODB.Command с тестовой таблицей с полем Date всё работает. Конечно там чуть иной синтаксис, да и строка подключения без кучи чисто экселевских параметров. Но всё работает
Пошагово попробуй исполнить, посмотри до куда дойдёт. Посмотри потом уже в экселевском (не VBA) интерфейсе свойства этого диапазона данных (там видна и строка подключения, и запрос, и параметры). ------------------ WBR, Igor |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
LUCIAN Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
Запрос с таким текстом
Исправлено 1 раз(а). Последнее : LUCIAN, 27.07.17 14:10 |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Возможно что этот механизм (с параметризованным запросом) и не работает с VFPOleDB провайдером. Тем более что он вообще и не предназначен для работы с ним, а скорее с данными с шарепоинт портала...
Впрочем, если выполнить запрос нужно однократно (не требуется автоматический рефреш, ну или его можно закодировать "вручную" - по тому же клику на кнопку) то можно пойти с другой стороны. Сначала создать адодб-шный рекордсет - в нём никаких проблем с параметрами при использовании VFPOLEDB провайдера нет - что из фокса, что из экселя. А потом уже при создании ListObject-а в качестве источника подсунуть этот самый рекордсет - он (ListObject) оттуда данные и возьмёт. В принципе можно и вообще без ListObject-а обойтись, тупо перегнав данные из рекордсета в нужный Range
P.S. Этот код работает, но он предельно упрощён - в частности он только 1 раз может отработать, т.к. не проверяет что в указанном диапазоне уже ЕСТЬ "список" и тупо пытается его снова создать... Если речь про работу с шаблоном, и там изначально создан список, то можно в него данные подсунуть, т.е. не создавать список, а использовать существующий. И да, если к VBA проекту подключить через References ADODB-ную библиотеку, то можно будет и в ObjectBrowser все методы/свойства/константы смотреть, да и в редакторе кода тоже. Например вместо 133 прописать "человеческое" имя константы adDBDate или как там её... ------------------ WBR, Igor |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Неверно сформулировано. Не работает именно механизм автоматической генерации всех этих ADODB-ных прибамбасов силами экселевского ListObject-а. Сам по себе VFP провайдер, ну и ADODB библиотека его использующая, без проблем работает с параметризованными запросами (правда с неименованными параметрами, что не всегда удобно). ------------------ WBR, Igor |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
LUCIAN Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
Для простейшего запроса изобрёл такое решение:
[attachment 28057 QUERY.GIF] Для кнопки "Произвести выборку" такой код:
|
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не надо так делать. НИКОГДА.
------------------ WBR, Igor |
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
LUCIAN Сообщений: 343 Откуда: Лида Беларусь Дата регистрации: 25.03.2008 |
А так можно?
|
Re: EXCEL В OLEDB;Provider=VFPOLEDB.1 ИЗМЕНИТЬ ПРОГРАММНО СВОЙСТВО CommandText | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это не настолько очевидно плохо, но всё равно плохо - SQL инъекция налицо. Конечно, если ты вообще не "закрываешь" сам модуль с кодом, то это не так уж и важно - юзер тупо зайдёт в редактор VBA и выполнит с твоей таблицей всё что угодно (даже если у него нет никакого фокса на машине). Впрочем, серьёзно говорить о безопасности/надёжности/защищённости системы с хранением данных в dbf не приходится
Чем не устраивает приведенный вариант с ADO рекордсетом? Там в чистом виде параметризованный запрос работает через тот же самый провайдер - и это правильно. Всё одно ты рефреш списка "по кнопке" вызываешь - так там не проблема каждый раз в коде это и делать. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |