powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пользовательские функции в SQL запросе на VB
12 сообщений из 12, страница 1 из 1
Пользовательские функции в SQL запросе на VB
    #32470270
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Написал следующий код:

Set cnn = New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command

strCnn = "DRIVER={Microsoft Visual Foxpro Driver}; UID=; Deleted=Yes; Null=Yes; Collate=Machine; BackkGroundFetch=Yes; Exclusive=No; SourceType=DBF; SourceDB=D:\DBF"
cnn.Open strCnn
Set cmd.ActiveConnection = cnn
strSql = "SELECT splt1(nm_frm) as name1 FROM tex"
rs.Open strSql, cnn, adOpenKeyset, 1

Почему-то выдается сообщение, что OBDC не поддерживает требуемый запрос, а именно из-за пользовательской функции splt1, который описан как public. Если использовать встроенные функции (Left, Mid, ...), то проблем нет.
Почему так происходит, что тут не так?
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32470679
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну правильно ,ты подсовываешь вместо поля имя функции. Так нельзя вызывать функцию (из кавычек)! Вызывай по другому.
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32470854
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) А как именно?
2) А почему, если использовать встроенные функции - все в порядке?
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473098
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому-что, встроенные функции, они и на СУБД встроенные.

Вызывая функцию в запросе, ты требуешь ее исполнния на стороне СУБД.
Вопрос: откуда СУБД знает, про функции на клиенте?
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473293
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня как раз и интересует, каким образом можно заставить сервер понимать пользовательские функции.

Т.е. объявить где-то, зарегистрировать чего-то и т.п.
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473331
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Какая СУБД используется?

2. Надо реализовать пользовательские функции на стороне СУБД (если это конечно возможно)
- В SQL Server это делается элементарно
- В Access вам придется реализовывать свои функции в модуле базы, к которой обращаетесь (с учетом возможностей ее версии VBA и синтаксиса)
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473337
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, про Access не уверен, сам не пробовал

Но по логике, должно сработать :)
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473511
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, про Access не уверен, сам не пробовал
Но по логике, должно сработать :)
не должно
только если исполнять запрос из самого аксеса, и пользовательская функция описана именно в той базе, в которой выполняетя запрос (а не в той, где лежат данные)
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473567
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, про Access не уверен, сам не пробовал
Но по логике, должно сработать :)

не будет. даже если в Access создать QueryDef с использованием пользовательской функции, описанной в самом Access - из Access этот запрос будет открываться, извне - не будет.

только если исполнять запрос из самого аксеса,

отсюда следует, что если запустить запрос не через Ado или DAO, а работая с Access через OLE Automation, то в таком случае все должно работать.
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473570
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, как вариант:

- написать запросы с параметрами в базе с данными (там же и свои функции)
- а с клиента не генерировать SQL код, а запускать запрос с параметрами
(по-моему это делается, примерно, как вызов ХП с MSSQL)
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473681
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели никто не сталкивался с такой ситуацией?

Есть в соседнем отделе БД - на DOSовской FoxPro2.6, плоская, старая, но работающая.
Хочу, используя VB, получить возможность формирования нужных мне отчетов (которые немножко отличаются от ихних отчетов), при этом не трогая саму базу и не мешая их работе.
Изменения при формировании отчетов небольшие, но если данные сначала считать, а потом обрабатывать - уходит много времени.

Думал просто с помощью SQL-запроса сразу сформировать базу с необходимыми изменениями (это возможно), но столкнулся с неприятием пользовательской функции. Как видите, отдельного SQL-сервера нет, хранимых процедур - тоже.

Можно конечно запустить SQL-запрос сначала на FoxPro или на ACCESS (предварительно импортировав базу) - там действительно проблем нет, но хотелось бы сделать все на VB и динамически.
...
Рейтинг: 0 / 0
Пользовательские функции в SQL запросе на VB
    #32473991
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2paparome:
ну не будет так работать! написал-же!!!

2Guest:
Вы сами себе создали условия (VB+динамика+пользовательские функции) при которых для Вас выход один:
прилинковать ваши фокспрошные таблицы в файл Acces, написать в этом файле Access нужные пользовательские функции, потом из VB работать с этим файлом через Access OLE Automation. Какие проблемы?

Во всем этом проще отказаться либо от VB либо от пользовательских функций в теле SQL-запроса.
Второй вариант на мой взгляд перспективнее и правильнее.

P.S. Скачать данные в отдельное место и при этом преобразовать их к удобному для анализа виду - вполне нормальная практика, и по этому пути идет мир(OLAP и OLTP) - каждому свое.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пользовательские функции в SQL запросе на VB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]