|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Здравствуйте. MS Access 2007. Windows 7 x64. Разделённая база данных *.accdb. Делаю запрос к серверу (таблица прилинкована, строка подключения прописана) таким образом: SELECT * FROM watermeters WHERE watermeter_id = "264879"; Всё работает, всё нормально, запрос обрабатывается очень шустро (доли секунды). Делаю ещё один запрос из локальной таблицы: SELECT watermeter_id FROM q_PrimerOVK; Возвращает значение 264879. Подставляю запрос к локальной таблице в запрос к серверу: SELECT * FROM watermeters WHERE watermeter_id IN (SELECT watermeter_id FROM q_PrimerOVK); Получаю ошибку. Что я делаю не так? Нужно делать запрос к серверу на основании полученного значения из запроса к локальной таблице. Принтскрины приложены ниже. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 09:34 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
[img=C:\Users\Валерий\Desktop\Запрос к серверу\2] ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 09:35 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Валерий ЗиминНужно делать запрос к серверу на основании полученного значения из запроса к локальной таблице. Сервер ничего не знает про локальные таблицы, по этому: 1. Получить значение из локальной таблицы 2. Использовать значение из п1. как параметр при вызове запроса к серверу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 09:50 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
bubuchaСервер ничего не знает про локальные таблицы Смотря что ТС называет сервером... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 09:57 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
bubucha, И это каждый раз подставлять вручную? Можно ли автоматизировать процесс? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 10:00 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
хм-м-мbubuchaСервер ничего не знает про локальные таблицы Смотря что ТС называет сервером... ну...судя по скриншотам и информации между строк :-) Валерий Зиминbubucha, И это каждый раз подставлять вручную? Можно ли автоматизировать процесс? vba решает такие вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 10:21 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Можно на сервере создать табличку для ключей и вставлять их туда перед выполенением основного запроса, а внем обращаться уже к серверной таблице. Кстати, знаю, можно получить полный текст ошибки от ODBC, т.е. расшифровать невнятную ошибку, но забыл как это делать. Напомнит кто-нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 10:37 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
MrShinМожно на сервере создать табличку для ключей и вставлять их туда перед выполенением основного запроса, а внем обращаться уже к серверной таблице. Сервер чужой. Они на это не пойдут. Так что не вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 15:38 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Валерий Зиминbubucha, И это каждый раз подставлять вручную? Можно ли автоматизировать процесс? vba решает такие вопросы[/quot] Кодом не угостите?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 15:53 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Валерий ЗиминСервер чужой. Они на это не пойдут. Так что не вариант. Ну так сами создайте временную таблицу, такие таблицы автоматически удаляются при закрытии сессии. Но в данном конкретном случае будет проще сформировать запрос через VBA, как было предложено выше, список ключей для выражения IN легко формируется в цикле, формируется полный текст sql и заменяется свойство sql запроса: Код: sql 1.
После чего просто используем запрос MyQuery как обычно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 16:12 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Сделал вот так, но не работает. Можете поправить? Private Sub q_OVK() Dim oMyDb As Database Dim oMyQuery As QueryDef Dim x As String x = DLookup("watermeter_id", "q_PrimerOVK") Set oMyDb = CurrentDb Set oMyQuery = oMyDb.CreateQueryDef("q_OVK", "SELECT * FROM watermeters WHERE watermeter_id = x;") End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 09:23 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
авторСделал вот так... а надо так ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 09:58 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Валерий ЗиминЗдравствуйте. MS Access 2007. Windows 7 x64. Разделённая база данных *.accdb. Делаю запрос к серверу (таблица прилинкована, строка подключения прописана) таким образом: SELECT * FROM watermeters WHERE watermeter_id = "264879"; Всё работает, всё нормально, запрос обрабатывается очень шустро (доли секунды). Делаю ещё один запрос из локальной таблицы: SELECT watermeter_id FROM q_PrimerOVK; Возвращает значение 264879. Подставляю запрос к локальной таблице в запрос к серверу: SELECT * FROM watermeters WHERE watermeter_id IN (SELECT watermeter_id FROM q_PrimerOVK); Получаю ошибку. Что я делаю не так? Нужно делать запрос к серверу на основании полученного значения из запроса к локальной таблице. Принтскрины приложены ниже. Я конечно не знаю, если таблицы прилинкованные, то оно должно работать и так. Попробуй прописать запрос с полным указанием ODBC пути к прилинкованной таблице. Что-то аля Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 12:31 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Шыфл, лишнее скопировал Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 12:33 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Спасибо за подсказки, но снова затык: Суть такая - на форме выбираю дом и квартиру. По адресу получаю уникальный код дома и присваиваю его к переменной per_x. Всё это подставляется в запрос к серверу к таблице personal_accounts. Из этого запроса получаю id и присваиваю его к переменной per_y. При этом через Debug.Print получаю значение этой переменной. После этого подставляю это значение в следующий запрос и... затык. При чём, если поставить полученное значение переменной per_y руками - всё работает - запрос возвращает одно значение. Как быть? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2017, 12:56 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Валерий ЗиминСпасибо за подсказки, но снова затык: Суть такая - на форме выбираю дом и квартиру. По адресу получаю уникальный код дома и присваиваю его к переменной per_x. Всё это подставляется в запрос к серверу к таблице personal_accounts. Из этого запроса получаю id и присваиваю его к переменной per_y. При этом через Debug.Print получаю значение этой переменной. После этого подставляю это значение в следующий запрос и... затык. При чём, если поставить полученное значение переменной per_y руками - всё работает - запрос возвращает одно значение. Как быть?Для начала перестать постить полотна или хотя бы закатывать их в спойлер. Затем прочитать и понять - http://www.sql.ru/faq/faq_topic.aspx?fid=410 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2017, 13:02 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
При чём при просмотре таблицы watermeters в режиме конструктора поле personal_account_id - тип данных "числовой", размер поля "длинное целое". Менял тип переменной per_y на String, Variant, Long - не помогло. Так же устанавливал значение per_y = rst!Id и через CLng(rst!Id) - тоже ничего не изменилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2017, 13:05 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
ПанургВалерий ЗиминСпасибо за подсказки, но снова затык: Суть такая - на форме выбираю дом и квартиру. По адресу получаю уникальный код дома и присваиваю его к переменной per_x. Всё это подставляется в запрос к серверу к таблице personal_accounts. Из этого запроса получаю id и присваиваю его к переменной per_y. При этом через Debug.Print получаю значение этой переменной. После этого подставляю это значение в следующий запрос и... затык. При чём, если поставить полученное значение переменной per_y руками - всё работает - запрос возвращает одно значение. Как быть?Для начала перестать постить полотна или хотя бы закатывать их в спойлер. Затем прочитать и понять - http://www.sql.ru/faq/faq_topic.aspx?fid=410 На счёт картинок дико извиняюсь - пробовал. Прочитал фак, там сказано, что Вставить изображение в сообщение можно двумя способами: 1. Приложить к сообщению картинку в фомате JPG, PNG или GIF. 2. Использовать тег IMG для гиперссылки на файл. Думаю от такого спойлера толку мало: C:\Users\Валерий\Desktop\Запрос к серверу\1.jpg Я не отрицаю свою руконеплечесть, но и тут тоже затык)) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2017, 13:28 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Set rst = oMyDb.OpenRecordset("SELECT id FROM personal_accounts WHERE (houseguid =""" & per_x & """ Зачем столько кавычек, если per_x числовое? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2017, 22:42 |
|
Синтаксис запроса к серверу.
|
|||
---|---|---|---|
#18+
Валерий ЗиминЗдравствуйте. MS Access 2007. Windows 7 x64. Разделённая база данных *.accdb. Делаю запрос к серверу (таблица прилинкована, строка подключения прописана) таким образом: SELECT * FROM watermeters WHERE watermeter_id = "264879"; Всё работает, всё нормально, запрос обрабатывается очень шустро (доли секунды). Делаю ещё один запрос из локальной таблицы: SELECT watermeter_id FROM q_PrimerOVK; Возвращает значение 264879. Подставляю запрос к локальной таблице в запрос к серверу: SELECT * FROM watermeters WHERE watermeter_id IN (SELECT watermeter_id FROM q_PrimerOVK); Получаю ошибку. Что я делаю не так? Нужно делать запрос к серверу на основании полученного значения из запроса к локальной таблице. Принтскрины приложены ниже. Попробуйте так: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2017, 00:09 |
|
|
start [/forum/topic.php?fid=45&startmsg=39569417&tid=1611699]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 165ms |
0 / 0 |