|
|
|
SQL-запрос в VBA и не только...
|
|||
|---|---|---|---|
|
#18+
Ребята, снова нужна ваша помощь! Задача в следующем. Пишу запрос, который выдергивает данные из таблицы (собственно это относится к топику "подстановка цен из справочника"), далее на него вешаю форму и чтобы подставить эту цену в другую форму при вводе продажи, приходится сначала макросом открывать эту форму (невидимую), потом задавать значение для цены и закрывать форму. Думаю. что можно сделать все это в VBA, но только не понял как и у меня не получилось. насколько я знаю, Sub...End Sub не возвращает никаких значений. Т.е. для данной задачи надо использовать Function.... End Function, которая как раз возвращает значения и может их подставить в поле формы. Как это сделать? Как запустить запрос в VBA (именно DoCmd.RunSQl.....) и возвращенное им значение присвоить переменной или полю в другой форме? Это первое. - -- - Теперь, чтобы не тянуть резину в долгий ящик - второе. :) Вопрос из области синхронизации баз данных. Предыстория: 2 завода. На каждом одна и та же база по структуре, но там разные данные, даже справочники и те разные. Возможности централизованно использовать базы - нет (на заводах нет сети и и-нета). Данные в офис едут на Флешке. Теперь собственно по сути проблемы! После проверки на корректность и т.п. в офисе, эти данные необходимо перенести в офисную базу, а дальше уж разрулить любую ситуацию дело 3-5 минут (зависит от сложности необходимого запроса). Предполагается все сделать через запросы на добавление. В тех базах какие-никакие а справочники контрагентов есть, поэтому у каждого есть свой ID, но они не совпадают ни между собой ни с офисной базой. Для подстановки автоматом нужного номера контрагент нужна небольшая (или большая) программа, которая будет подставлять нужный номер для контрагента. Пример: База завода1 ........ ООО "Рога и копыта" - 123 ........ База завода2 ........ ООО "Рога и копыта" - 322 ....... База офиса ....... ООО "Рога и копыта" - 576 ......... Задача состоит в том, чтобы при запуске запроса на добавление данных в офисную базу из базы завода, в поле контрагент подставлялся не 123 или 322, а 576. Т.е. как это видится мне. ................... IF поле_"ЗАВОД"_в_форме = завод1 THEN IF контрагентИД_в_запросе = 123 THEN переменная = 576 END IF END IF поле_контрагентИД_в_офисной_таблице = переменная ................... И так для каждой записи. Как это сделать? Можено ли обойтись одним запросом на добавление или придется перебирать все записи поочредно??? Помогите, пожалуйста. Желатетльно "живой пример", а не общие сведения. Посмотрел в книге подобный пример, но не фига не понял. :((( Буду очень признателен. Аналогично и для справочника товаров. Цены беруться из справочника цен офиса. Но если я пойму как это делается на примере контрагента, то и остальное смогу сделать сам, надеюсь. :) Заранее прЫзнатЭлен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 19:43 |
|
||
|
SQL-запрос в VBA и не только...
|
|||
|---|---|---|---|
|
#18+
ну зачем писать так длинно. не все решеться прочитать такой толмут. пиши лучше кратко, будет больше шансов на ответ. теперь собственно: 1. чтобы открыть запрос set rs=currentdb.openrecordset("Имя запроса") чтобы присвоить значение в другой форме forms![Имя формы]![Имя контрола]=rs![...] при этом форма д.б. открыта. 2. по поводу справочников. вроде это уже обсуждалось в этом форуме, попробуй поискать. мое мнение - таблица соответствия, т.е. в каждом подразделении помимо своего внутреннего кода (123 или 322), хранить еще и код общий (576). как ее заполнять - дело вкуса, но в общем случае вручную, т.к. даже один лишний пробел непозволит сопоставить названия из разных баз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2003, 09:35 |
|
||
|
|

start [/forum/topic.php?fid=45&gotonew=1&tid=1680513]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 330ms |

| 0 / 0 |
