Помогите решить задачу. Для создания папки в конкретной директории используется: MkDir ("C:\file\" & [nameFirm]) А как создать эту папку в папке, где расположен сам файл БД? Искал по форуму, ничего не понял.
Ребята можно ли организовать такую фишку как "Повтор последнего действия." как в WORD(е) - CTRL+Y. Поясню, в таблице есть поле ntext (16). Пользователь заполняет данное поле и еще не сохранив случайно удаляет, приходится набирать заново... Спасибо.
У меня есть БД1 в локальной сети, в которой хранятся таблица и форма для ее изменения. Есть БД2 в локальной сети, в которой по запросу Кнопки1 открывается Форма из БД1, по кнопке2 открывается таблица из БД2. Вопрос: при нажатии на кнопку2 - откроется таблица, как мне запретить удаление содержимого ячеек в этой таблице (которая откроется в БД2) другим пользователям? Но оставить доступ на добавление записей через форму.
Коллеги, добрый день! Подскажите пожалуйста, как в многопользовательском режиме реализовать отправку письма только 1 раз (от любого пользователя) Столкнулся с тем, что письмо было отправлено 2 раза, т.е. дважды (одновременно) отработала процедура CreateMsgInOutlook_everyday На постоянно открытой форме (таймер = 30 секунд) сделал вот такую проц-ру:
Private Sub Form_Timer()
Dim xlog As Boolean
Dim MyTimeBegin
Dim MyTimeEnd
MyTimeBegin = TimeSerial(12, 1, 0)
MyTimeEnd = TimeSerial(12, 2, 0)
Dim MyTimeBegin2
Dim MyTimeEnd2
MyTimeBegin2 = TimeSerial(12, 3, 0)
MyTimeEnd2 = TimeSerial(12, 4, 0)
xlog = DLookup("XXX", "tbl_Timer", "ID = 1")If xlog = FalseAndTime >= MyTimeBegin AndTime < MyTimeEnd Then
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tbl_Timer SET tbl_Timer.XXX = TrueWHERE tbl_Timer.ID=1;"
DoCmd.SetWarnings True
Call CreateMsgInOutlook_everyday(True)EndIfIf xlog = TrueAndTime >= MyTimeBegin2 AndTime < MyTimeEnd2 Then
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tbl_Timer SET tbl_Timer.XXX = FalseWHERE tbl_Timer.ID=1;"
DoCmd.SetWarnings TrueEndIfEnd Sub
Обнаружил интересный эффект. Нужно было получить TableDef определенной таблицы, а присвоение
Set tdf = CurrentDb.TableDefs(strTable)
не работало - на tdf рагалось дальше "Object invalid or no longer set"
Вот так работает:
Set tdf = DBEngine(0)(0).TableDefs(strTable)
И так работает:
Set db = CurrentDb()
Set tdf = db.TableDefs(strTable)
Не совсем понятно, почему такое происходит. Понятно, что CurrntDb дает ссылку на текущую копию базы данных, каждое обращение это будет новая копия, но ссылка на объект с определением таблицы должен быть тот же самый. Или все ссылки на объекты базы данных, полученные через CurrentDb разрушаются сразу же после обращения к CurrentDb?
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97 Выгрузка возможна только начиная с самой первой строки... Пусть так. А как программно из Access добавить в лист Excel в самый верх 5 строк? -------------------------------------------------------------------------- СПС
При построчной выгрузке из Access в Excel На строке 32768 вылетаем из выгрузке с ошибкой. Я думал, что это ограничение для 2003 офиса. Или дело в кривых руках? -------------------------------------------------------------------------- СПС
В общем, есть приложение, которое использует Interop и работает с Access. После того, как я снес Office 2016 х64 и поставил office 2013 x32 начались проблемы... При работе программы начала вылетать ошибка: HRESULT 0х80010105. Опытным путем я нашел решение в виде установки Access DataBase Engine 2010 х32 и после этого программа работает. Проблема в том, что стоит мне открыть Access руками, так office выполняет конфигурирование и после этого приложение опять перестает работать... Подскажите, как решить данную проблему? Когда стоял 2016 офис я такого не припоминал...
Доброго времени суток, подскажите пожалуйста в чем мой косяк....
Вот пример кода:
Set rst_1 = b.OpenRecordset("vibor_ip_kalkul")
kol_vo = rst_1.Fields.Count
WhileNot rst_1.EOF
znach = Trim(rst_1!Vibor)
MsgBox rst_1!Vibor
sqlstr = "select * from ОТВЕТЫ_ИП where (ОТВЕТЫ_ИП.НОМЕР_ИП like '" & "* " & znach & " * ')"' " '"
MsgBox sqlstr
Set rst = CurrentDb.OpenRecordset(sqlstr, dbOpenSnapshot)
'MsgBox sqlstr
ViewRecordset rst
kol_vo1 = rst.Fields.Count
'MsgBox rst1!НОМЕР_ИП
rst_1.MoveNext
I = I + 1
Wend
Суть проблемы, в том, что Set rst = CurrentDb.OpenRecordset(sqlstr, dbOpenSnapshot) возвращает пустой результат, хотя если в аксесе "на прямую" сделать запрос из sqlstr = "select * from ОТВЕТЫ_ИП where (ОТВЕТЫ_ИП.НОМЕР_ИП like '" & "* " & znach & " * ')" ' " '" где заменить & znach & на конкретные значения которые отображаются, то запрос выводит корректный результат....
Ткните пожалуйста носом в мою безграмотность в написании запросов...
Проблема состоит в том, что при переходе с 32-разрядного офиса (2010) на 64-разрядный (2013) перестала работать ADO-подключение. Access 2013 вылетает с ошибкой на скрине. Строка подключения формируется так:
автор
conn.ConnectionString = "Provider=IBMDADB2;Database=" + bz + ";Hostname=" + sr + ";Protocol=TCPIP;Port=50000;Uid=" + NAME + ";Pwd=" + logind + ";"
Подключение к базе DB2. Ранее в 32-разрядных системах без проблем работало.
Понедельник, 29 Августа 2016 г. 20:44
+ в цитатник
Вот кусочек кода, где в определённой папке просматриваются файлы, находится mdb файл, и из него перебрасываются данные в нашу базу.
ForEach f1 In fc
If InStr(1, f1.Name, "OTCHET_OT", vbTextCompare) <> 0 And InStr(1, Nz(f1.Name), "mdb", vbTextCompare) <> 0 Then' имя файла "OTCHET_OT"Set DB_OTCHETOV = OpenDatabase(FOLDER_OTCHETOV & "\" & f1.Name)
FILE_OTCHETOV = f1.Name
' Цикл по всем таблицам в базе данныхForEach TDF_OTCHETOV In DB_OTCHETOV.TableDefs
If TDF_OTCHETOV.Name = "TRANZAKTION_V_OFIS_TBL"Then' таблица имеется'перебросим данные
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO TRANZAKTION_VSE_V_OFISE_TBL " _
& " SELECT TRANZAKTION_V_OFIS_TBL.* " _
& " FROM TRANZAKTION_V_OFIS_TBL IN '" & FOLDER_OTCHETOV & "\" & FILE_OTCHETOV & "' " _
& " WHERE (((Year([PAY_DATA]))>=FUN_GOD_MINIMUM()));"
DoCmd.SetWarnings TrueEndIf' таблица имеетсяNext TDF_OTCHETOV
EndIfNext
Код работает оч быстро, всё нормально. Вопрос в другом... -------------------------------------------------------------------------- СПС
Понедельник, 29 Августа 2016 г. 18:44
+ в цитатник
Добрый день господа, подскажите как отобразить в компоненте WebBrowser изображение в кодировке Base64? При подстановки в Navigate текста выпадает ошибка, при методе Write изображается текст в кодировка Base64. Как побороть? И в догонку, как отобразить офисные документы в компоненте?
Понедельник, 29 Августа 2016 г. 13:13
+ в цитатник
Снова привет всем форумчанам. Есть у меня в аксесе несколько табличек: одна табличка главная (ДОКУМЕНТЫ), а остальные - это справочники (связанные с главной внешними ключевыми полями). В главной таблице связанные поля дополнительных таблиц реализованы выпадающими списками. Мне надо сделать запрос, который выдавал бы все записи главной таблицы (ДОКУМЕНТЫ), только в полях с внешними ключами чтобы отображались не коды, а значения других полей из этих связанных табличек. Например, чтобы в итоговом запросе вместо поля "КодКонтрагента" было поле "НаименованиеКраткое" из той же связанной таблицы. Я в конструкторе запросов добавил все необходимые таблички, добавил все интересующие меня поля и при выполнении запроса он не выдает ни одной записи. Сначала я не мог понять почему, но в итоге, методом тыка, я понял, что запрос выводит только те записи, в которых все ключевые поля из других таблиц не пустые. А у меня в некоторых случаях какие-то поля должны иметь возможность оставаться пустыми. Как настроить запрос так, чтобы он выдавал абсолютно все записи, даже если поля с внешними ключами в этих записях пустые?