powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синтаксис запроса к серверу.
4 сообщений из 29, страница 2 из 2
Синтаксис запроса к серверу.
    #39572620
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий ЗиминНа счёт картинок дико извиняюсь - пробовал.Картинки можно обрезать до размера значимой части. Сообщения об ошибках можно копировать методом копипаста (Ctrl+C, Ctrl+V) прямо в сообщение на форуме, код вставлять в тэгах, там же и выделять требуемую часть спецтэгами. Всё это есть в помощи на сайте. Примерно как это сделал я.
...
Рейтинг: 0 / 0
Синтаксис запроса к серверу.
    #39572760
а так?Set rst = oMyDb.OpenRecordset("SELECT id FROM personal_accounts WHERE (houseguid =""" & per_x & """

Зачем столько кавычек, если per_x числовое?

Как раз-таки тут без кавычек не работает, а вот в rst2 убрал лишние кавычки, написал вот так:

Код: vbnet
1.
Set rst2 = oMyDb.OpenRecordset("Select watermeter_id from watermeters where (personal_account_id = " & per_y & ") AND (watermeter_unit = 1);")



И всё заработало!

Ещё одна вещь: если в таком запросе возвращается не одна строка, а две?
Пробовал добавить .fields(0) - опять эррор.

Код: vbnet
1.
Set rst2 = oMyDb.OpenRecordset("Select watermeter_id from watermeters where (personal_account_id = " & per_y & ") AND (watermeter_unit = 1);").fields(0)
...
Рейтинг: 0 / 0
Синтаксис запроса к серверу.
    #39600589
Всем здравствуйте! Опять прошу помощи:
Вопрос по той же БД. Цель: получить таблицу, в которой будут объединена информация из двух БД (локальной и MySQL).
Я написал модуль, который ищет из удалённой таблицы MySQL нужные сведения, на основании данных, содержащихся в локальной БД. Говоря прямо, в моей БД хранятся показания счётчиков холодной и горячей воды. Идентификация проходит следующим образом:
Адрес дома, номер квартиры, ИД прибора учёта, показания, дата снятия показания.

Надо привести эту информацию к виду:

ИД лицевого счёта водоканала, номер прибора учёта, показания, дата снятия показания.

При помощи модуля у меня находится информация из базы данных водоканала, с параметрами, указанными из формы локальной БД.
То есть я в форме выбираю адрес дома и номер квартиры, на основе этого модуль ищет лицевой счёт этой квартиры в БД водоканала, ищет ИД лицевого счёта, из другой таблицы находит номер прибора учёта и возвращает эти данные.

В идеале, было бы здорово, если бы из формы данные отправлялись в БД водоканала, но это сложно, я вряд ли смогу это сделать (у Водоканала БД MySQL, внесение информация происходит при помощи процедуры).
Есть вариант экспортировать информацию в отдельную таблицу.
Я бы хотел сделать это в два этапа: сначала собираю информацию с данными из локальной БД. Потом, с помощью цикла, сформировать новую таблицу, в которую должны подтянуться данные из БД водоканала (те самые ИД лицевого счёта и номер прибора учёта) и моей (локальной) БД.
На счёт второго варианта: я не знаю как в VBA формировать новую таблицу, осуществлять поиск записи из других таблиц и делать подстановку значений, на основании имеющихся данных.
Алгоритм такой:
1) Создать таблицу
2) Посмотреть первую запись из таблицы показаний
3) На основании адреса и квартиры, найти из внешней БД MySQL ид аккаунта и номер прибора учёта
4) Присвоить эти значения просматриваемой записи
5) Перейти к следующей записи
6) Повторить п. 3-5. (до последней записи)

Как это реализовать в VBA я не знаю(( Может кто-нибудь подсказать?
...
Рейтинг: 0 / 0
Синтаксис запроса к серверу.
    #39601087
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий Зимин,

А что конкретно ты не знаешь? Как програмно создать табліцу? Так а оно тебе надо програмно? Создай одін раз і заполняй. Ілі через дао
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
 
Dim dbsNorthwind As Database 
Dim tdfNew As TableDef 
Set tdfNew = dbsNorthwind.CreateTableDef("NewTableDef") 
      tdfNew.Fields.Append tdfNew.CreateField("Date", dbDate)
      tdfNew.Fields.Append tdfNew.CreateField("FirstName", dbText) 
      tdfNew.Fields.Append tdfNew.CreateField("LastName", dbText)  
dbsNorthwind.TableDefs.Append tdfNew 



Как вабрать запісь табліцы показаній, как перейті к следуюсчей запісь? Откраваешь рекордсет і лістаешь его через .MoveNext пока он не кончітся .EOF=true

На основаніі полей рекордсета .fields("address") і .fields("квартіра") открываешь рекордсет к твоей MySQL водоканала і счітываешь поля .fields("ИД лицевого счёта водоканала") і .fields("номер прибора учёта") запісываешь іх в табліцу (опять же через рекордсет .Add і .Update).

Всё в цыкле
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
do until not r.EOF

_$$$$$___$$__$$_$$$$$___$$$___$$$__$$$$__$$$$$$_$$__$$
$$__$$___$$__$$_$$______$$$$_$$$$_$$__$$_$$__$$_$$__$$
_$$$$$___$$$$$$_$$$$____$$_$$$_$$_$$__$$_$$______$$$$$
__$$$$___$$__$$_$$______$$__$__$$_$$__$$_$$________$$
$$__$$___$$__$$_$$$$$___$$_____$$__$$$$__$$______$$

r.MoveNext
loop



Ну ілі не парішься, лінкуешь табліцу базы водоканала с нужнымі даннымі і делаешь прямой SQL запрос через join
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синтаксис запроса к серверу.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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