|
|
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, вообщем у меня такая ситуация: нужно с помошью VBA создать функцию с простеньким SQL запросом, из которого нужно выцепить результат в виде текстовой переменной (в результате этого запроса будет получаться всего лишь одно единственное значение). PS В хелпе уже больше не могу ковыряться, всесь мозг сломал :( Топик, ..., переименован ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 16:10:40 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 16:12:02 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Если кто может, помогите, очень надо..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 17:30:08 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Держи, проще некуда: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 17:37:47 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Напишите нормально вопрос. Как это делается - я дал ссылку. Хотя бы - MDB/ADP - и пример исходных данных и результата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 17:39:18 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
см. хелп по DLookup ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 17:44:53 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
incold, извени, что подробно не расписал, просто я ни когда не сталкивался с написанием макрасов в access, но очень срочно понадобилось сделать очень простую функцию, типа вложенного селекта. Хотя у меня глобальная задача посложнее будет: Вообщем, у меня есть список телефонных кодов(префиксов), операторов и цен на данное направление (таблица выгледит следующим образом [prefix, opperator, price]). Есть маленькая хитрость: если оператор в прайсе дает код 1(сша и канада) по цене 5 центов, то все коды, которые начинаются с этой цифры (1204,12687, 1450 и т.п.) тоже должны быть по этой цене, т.е по 5 центов. Для сравнения цен мне нужно сделать перекресный запрос с таким условием, чтоб если встречается пустая цена, то должна выполняться следующая штука: от текущего кода должно отсекаться по по одному символу, пока не будет найдена цена вышестоящего префикса. Если такого префикса нет, то должно остаться пустое значение. Если делать с DLookup получается очень медленно, на запрос может уйти очень много времени (около часа наверное). Я хотел сделать функцию, которая могла бы выполнять слелующий алгоритм и возвращатать нужную цену. Кстати, у меня проблемма :( уже не первый раз пытаюсь запустить макрос, а у меня постоянно выдается ошибка... Если рассматривать на примере написанного сдесь кода товаришем PA(за что ему огромное спасибо), то при запуске выделяется строка "Dim qdf As DAO.QueryDef" и появляется надпись: "User-defined type not defined" Почему так получается? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 18:43:47 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Перед мной не нужно извиняться, просто чем более полно описан вопрос, тем выше вероятность получить быстро и много различных вариантов решения данного вопроса. автор"Dim qdf As DAO.QueryDef" и появляется надпись: "User-defined type not defined" Скорее всего не подключена библиотека DAO (как подключить см. FAQ) Таблица есть. А что должен вернуть запрос? В смысле какие поля и по какому алгоритму каждое из них д.б. заполнено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 18:53:41 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Честно говоря, не понял, зачем для исполнения "простенького запроса" создавать querydef Можно написать проще для мдб: public function f f=currentdb.execute("select ...и дальше текст запроса...").fields(0) end function для адп: public function f f=currentproject.Connection.execute("select ...и дальше текст запроса...").fields(0) end function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 19:04:38 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Таблица есть, но только я её переслать не могу, на работе за такое по какосам настучать могут :( чтоб было по понятней, приведу какой-нибудь пример: Вообщем, предположим, один из операторов дал код 7(Россию целиком) по цене 10 центов, 79 (типа все сотовые) по 5 центов. В нашем случае в таблице появляется код 7095. Оператор отдельно его не выделил, хотя реально по его прайсу он стоит 10 центов. Адгоритм таков, что он отсекает последний символ (в нашем случае получается 709), ни чего не находит, отсекает еще один (70)- опять ни чего; опять отсекае(7) - находит код 7 с ценой 10 центов и присваивает эту цену текушему коду, т.е. в нашем случае 7095=10 центов... и т.д. Вот такая вот загагулина :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 19:18:24 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
2 -=XXX=- Как всё знакомо про префиксы:) Ваша биллинговая система неверно устроена - алгоритм не таков - реально расписываются все возможные коды и комбинациии на конкрентную зону, плюс ещё есть правила подмены - в общем, не составляет никакого труда по справочникам с префиксами найти нужный тариф по заданной зоне... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2004, 00:21:53 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
А код 7095, я так подозреваю, идёт из детелизации переговоров?:) В общем - определите таблицу зон и префиксов по зонам - оператор предоставляет эту информацию - жизнь станет проще - если вы суб оператор у вас она и так проще должна быть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2004, 00:24:20 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
если так уж прижало - делайте так как сами и написали... на вскидку что-т вроде: в запросе сослаться на функцию q передав ей в качестве аргумента значение n введенное оператором: CountryCode&CityCode (напр 7095 или 71141) как стринг напр: function q(n as string) as currency ну и пребирайте в цикле с обратным шагом как и написали в задании for i = len(n) to 1 step - 1 n = left(n,i) ищите ваше значение Длукап'ом - поиск тарифа по совпадению кода страны с переменной n a = dlookup("Tariff", "tblCountries", "CountryCode = " & n) если нашли выходите из цикла exit for если нет идите дальше - next i или можно рекурсивную функцию написать - пусть сама себя вызывает хоть до посинения... но по большому буфету - прислушайтесь к советам предыдущих ораторов... если оператор неверно ввел 7095 кто проверит на 7094 - может он не только в одном месте ошибся... или если ввел код страны которо(й)го вообще не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2004, 13:21:07 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
YBWищите ваше значение Длукап'ом - поиск тарифа по совпадению кода страны с переменной n кажется на Null еще придется проверять - вощем попробуй сам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2004, 13:28:35 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Hummer2 -=XXX=- Как всё знакомо про префиксы:) Ваша биллинговая система неверно устроена - алгоритм не таков - реально расписываются все возможные коды и комбинациии на конкрентную зону, плюс ещё есть правила подмены - в общем, не составляет никакого труда по справочникам с префиксами найти нужный тариф по заданной зоне... Биллинг у нас хорошиы и зоны определяет, и с детализацией работает как надо :) Честно говоря, он сдесь не причем... это нужно для анализа цен закупки у операторов. Т.к. зоны у всех разные, префиксы на направления тоже все по своему дают (бывает даже очень коряво), мне просто нужно их сравнить и проанализировать. В excele все очень просто и быстро работает, а вот в Accesse, что -то пока не получается :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 10:13:14 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Function a(n As String) As String For i = Len(n) To 1 Step -1 n = Left(n, i) a = DLookup("Tariff", "tblCountries", "CountryCode = " & n) & "" If a <> "" Then Exit For End If Next i End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 10:19:51 |
|
||
|
Срочно нужна помошь (создать VBA функцию с SQL запросом и вернуть одно его значение)
|
|||
|---|---|---|---|
|
#18+
Geo public function f f=currentdb.execute("select ...и дальше текст запроса...").fields(0) end function Выделяет ".execute" и сообщает об ошибке "Expected Function or variable" :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 10:57:30 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32742180&tid=1671032]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 309ms |

| 0 / 0 |
