Range("A1:A")
не является допустимым адресом, потому что номер строки в конце отсутствует.
Это должно быть что-то вроде ...
Range("A" & Rows.Count).End(xlUp).Row
, соответственно, должно быть
SendTo = SendTo & Range("A" & BuildAddy).Value & ";"
. Также вы должны указать для всех Range(…)
, в каком листе находится диапазон. Как и Worksheets("Emails").Range(…)
, в противном случае Excel не может этого знать.
Попытка, просто выполняющая запрос
select DATABASE();
Из того, что я мог найти, DBH имеет доступ к DSN, который Вы первоначально соединили с, но не после внесения изменения. (Существует, вероятно, лучший способ переключить базы данных.)
Можно спросить mysql:
($dbname) = (each %{$dbh->selectrow_hashref("show tables")}) =~ /^Tables_in_(.*)/;
Обновление: очевидно, выберите БАЗУ ДАННЫХ (), лучший способ сделать это :)
При создании объекта соединения, это для определенной базы данных. В случае DBI так или иначе. Я я не верю выполнению SQL USE database_name
будет влиять на Ваш экземпляр соединения вообще. Возможно, существует select_db (Мой DBI ржав), функция для объекта соединения, или необходимо будет создать новое соединение с новой базой данных для экземпляра соединения для надлежащего создания отчетов об этом.
FWIW - вероятно, не очень - DBD:: Informix отслеживает текущую базу данных, которая может измениться, если Вы делаете операции, такие как CREATE DATABASE. $dbh->{Name}
атрибут указан спецификацией DBI как имя, используемое, когда дескриптор устанавливается. Следовательно, существует Informix-определенный атрибут $dbh->{ix_DatabaseName}
это обеспечивает фактическое текущее имя базы данных. См.: perldoc DBD::Informix
.
Вы могли рассмотреть запрос специалиста (специалистов) по обслуживанию DBD:: MySQL добавляет подобный атрибут.