-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4

Invalid link!








Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://www.sql.ru/forum/actualtopics.aspx?bid=4.
Данный дневник сформирован из открытого RSS-источника по адресу http://www.sql.ru/forum/actualrss.aspx?id=4, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

идентификация пользователя

Понедельник, 11 Июня 2018 г. 12:14 + в цитатник
Всем добрый день! В базе с помощью мастера mdw созданы пользователи. У каждого должен быть свой интерфейс и для каждого должна быть определена своя фильтрация данных в таблицах. Вопрос: можно ли как-то средствами VBA определять, под каким пользователем запущена база (нужен логин или код)? База будет запускаться в монопольном режиме по сети, либо вообще на одном компе, это пока не решили. При запуске после ввода логина/пароля будет запускаться главная кнопочная, она у всех одна, а вот дальше... я полагаю, это должно быть свойство какого-нибудь объекта, значение которого и содержит логин или код пользователя.

http://www.sql.ru/forum/1295726/identifikaciya-polzovatelya


Ошибка синтаксиса в операции JOIN в ACCESS

Суббота, 09 Июня 2018 г. 16:50 + в цитатник
Access выдает ошибку при запуске запроса "Ошибка синтаксиса в операции JOIN", помогите, плиз, найти эту самую ошибку)
В БД таблица tTransactions, в ней столбцы:
- iConstituentID
- cAmount
- iResponseID
- dDate

Задача следующая: 1)выбрать все последние записи по каждому человеку (iConstituentID) с iResponseID равным 34 - дата в этой выборке будет Datereact. 2)Дальше выбрать все последние записи по каждому человеку с iResponseID не равным 34 или 54, при том что dDate должна быть меньше Datereact - дата в этой выборке будет Datedonationbeforereact. 3)В итоге получить выборку людей с разницей между датами Datereact и Datedonationbeforereact.

SELECT m. iConstituentID, DiffDate ((m.Datedonationbeforereact),(t.Datereact))
FROM 
(
(
SELECT tTransaction.iConstituentID, tTransaction.dDate AS Datereact, tTransaction.iResponseID, tTransaction.cAmount
FROM tTransaction
WHERE ((tTransaction.iResponseID)=34) AND ((tTransaction.cAmount)>0)
)
AS t
INNER JOIN
(
SELECT tTransaction.iConstituentID, Max(tTransaction.dDate) AS Datedonationbeforereact, tTransaction.iResponseID, tTransaction.cAmount
FROM tTransaction 
WHERE (   (  (tTransaction.iResponseID)<>34 AND (tTransaction.iResponseID)<>54) AND  (  (tTransaction.cAmount)>0))
) 
AS m

ON t.iConstituentID = m.iConstituentID
WHERE ((m.Datedonationbeforereact)<(t.Datereact));

http://www.sql.ru/forum/1295636/oshibka-sintaksisa-v-operacii-join-v-access


Многозначные поля (поля, одновременно допускающие несколькнесколько значений). За и против

Четверг, 07 Июня 2018 г. 12:02 + в цитатник
Как я понял, некоторые разработчики Access не совсем хорошо представляют себе, что такое многозначные поля, или как их называет Микрософт - поля, одновременно допускающие несколько значений. В своё время я прочитал о них, обдумал, и решил пока не применять. В основном потому, что приходилось писать программы под разные версии Access, а для этого формат MDB выглядел предпочтительнее. Да и к связующим таблицам я уже привык.

Просмотрев несколько последних самоучителей по Access, я обнаружил, что там нет ничего о многозначных полях. Вот я и решил выложить здесь всё то, что в своё время нарыл в интернете. Так сказать для общего развития.

До появления программы Access 2007 связующие таблицы были единственным средством создания связей "многие-ко-многим". Но для поддержки средств интеграции сервисов SharePoint в Access 2007 включена новая функциональная возможность — многозначные поля.
Как следует из названия, многозначное поле может хранить более одного значения. Эта возможность очень удачно решает проблему связей "многие-ко-многим". Идея состоит в настройке связующего поля в таблице-потомке как многозначного поля. Рассмотрим пример с авторами и книгами. При отсутствии связующей таблицы вам нужно вставить столбец AuthorID в таблицу с записями о книгах для обозначения каждого автора, написавшего данную книгу.
Но обычное поле хранит единственное значение. Таким образом, в этой таблице можно указать только одного из нескольких авторов книги (если её пишет авторский коллектив).
Если же разрешить хранение нескольких значений в поле AuthorID, можно ввести список авторов.

За кадром многозначное поле в действительности использует связующую таблицу. Но программа Access скрывает эту подробность от вас, что существенно облегчает объединение связанных записей.
Для создания поля с несколькими значениями следует использовать подстановку. Как вы знаете, эта функциональная возможность выбирается на последней странице мастера Создание подстановки. С другой стороны, если у вас уже есть подстановка, в поле, необходимо внести небольшое изменение. Откройте таблицу в Конструкторе, выберите поле с подстановкой и затем в области Свойства поля щелкните кнопкой мыши вкладку Подстановка (Lookup). Найдите свойство Разрешение нескольких значений (Allow Multiple Values) и измените его значение с Нет на Да.

Примечание
Как только вы задали в поле поддержку множественных значений, вы не сможете вернуться к варианту поддержки одного значения.

В данном списке подстановки применяются флажки, поскольку он предназначен для многозначного поля. В одной записи можно выбрать несколько значений, установив флажки нескольких элементов списка. Тем самым вы указываете, что одна книга была создана в результате партнерства нескольких авторов.

Многозначные поля доступны, только если применяется БД нового формата с расширением accdb . В файле с расширением mdb (БД, созданной программой Access 2003 и еще не преобразованной) вы не сможете их использовать.

Поля с множественными значениями вызывают проблемы при переносе вашей БД на SQL Server, поскольку SQL Server не поддерживает их. Следовательно, если есть вероятность совместного использования вашей БД многими пользователями (скажем, в большой компании) и вы можете в какой-то момент перенести ваши данные в БД более мощной программы SQL Server, избегайте полей с множественными значениями.

Примечание
Поля с множественными значениями не создают проблем при переносе вашей БД на Share-Point Server.

Работа со связями "многие-ко-многим"

Какой подход лучше: связующие таблицы или поля с множественными значениями?

Большинство фанатов БД будут приверженцами связующим таблицам. Такие таблицы приняты, укоренились и не скрывают внутреннего функционирования вашей БД. Связующие таблицы особенно удобны, если вы хотите добавить дополнительную информацию о связи между двумя конкретными таблицами. Предположим, что вы создаете таблицу Students_Classes для учета учебных курсов, которые все студенты слушают в популярном учебном заведении. В таблицу Students_Classes можно включить дополнительные поля, такие как EnrollmentDate (дата записи на курс), Соn-firmationLetterSentDate (дата отправки подтверждающего письма) и Prerequi-sitesChecked (необходимые условия приема проверены).

С другой стороны, у связующих таблиц есть недостатки — с ними трудно работать на листе данных. Если в вашей БД применяется связующая таблица Authors_Books, для вставки новой книги в вашу систему придется редактировать, по крайней мере, две таблицы. Сначала необходимо вставить запись в таблицу Books. Затем следует открыть таблицу Authors_Books и вставить в нее новую запись, которая свяжет книгу с автором. (Для облегчения этого процесса можно использовать подстановки в таблице Authors_Books, но все равно для этого требуется отдельный шаг.) Если же в таблице Books содержится поле Authors с множественными значениями, можно добавить книгу и присвоить ей авторов за один шаг, что гораздо удобнее.

Если вы решили остановиться на связующих таблицах и хотите облегчить свою жизнь, программа Access предлагает отличное решение. Можно создать настраиваемую форму, умеющую работать сразу с несколькими таблицами. Можно сконструировать форму, позволяющую человеку, работающему с БД, вставлять запись одновременно и в таблицу Books, и в таблицу Authors_Books. И главное — ваша форма может выглядеть так, как будто она использует только одну таблицу.

Использовано:
Многозначные поля
Руководство по полям, одновременно допускающим несколько значений
Использование в запросах полей, одновременно допускающих несколько значений

Прошу высказать Ваши замечания, предложения, мнения о проблеме.

-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?

http://www.sql.ru/forum/1295387/mnogoznachnye-polya-polya-odnovremenno-dopuskaushhie-neskolkneskolko-znacheniy-za-i-protiv


Не открывается база

Среда, 06 Июня 2018 г. 22:02 + в цитатник
На другом пк не открывается база (2007, Win10).
Вместо этого открывается стандартное окно "Приступая к работе"

На моем (2007, Win7) открывается без проблем.

http://www.sql.ru/forum/1295350/ne-otkryvaetsya-baza


Что лучше: запрос на обновление или цикл по Recordset-у?

Среда, 06 Июня 2018 г. 11:56 + в цитатник
Всем доброго времени суток!

Я намерен создать базу данных для многопользовательского применения. Заранее хочу определиться логикой.
Такой вопрос: как лучше обновлять большое количество записей в БД, чтобы пользователи друг другу не мешали?
Вариант 1. Делать запрос на обновление (так проще и быстрее)
Вариант 2. Загнать записи в рекордсет и с помощью цикла выполнить их обновление

http://www.sql.ru/forum/1295286/chto-luchshe-zapros-na-obnovlenie-ili-cikl-po-recordset-u


Как в запросе вывести поле, допускающее несколько значений, в составе текста

Среда, 06 Июня 2018 г. 07:23 + в цитатник
Добрый день.
Пожалуйста, помогите решить проблему.


Для примера своей задачи. Есть запрос:
- Поле 1: [Имя клиента]
- Поле 2 (поле, допускающее несколько значений*): [Даты] (например 1.06.2018; 6.06.2018)

Нужно вывести несколько полей в одном поле (Поле 3) в виде столбика:
Клиент: "Фирма"
Даты: 1.06.2018; 6.06.2018

В поле 3 пробовал делать так: "Клиент: " & [Имя клиента] & Chr(13) & Chr(10) & "Даты: " & [Даты].
Выдает сообщение: Поле, допускающее несколько значений, недопустимо в таком выражении.

Пробовал, но безуспешно
- CStr([Даты] - недопустимое выражение
- CDate([Даты].[Value] - выводит дату, правда неверную и добавляет строки в запросе (т.е. неприемлемо).

* отказаться от поля, допускающего несколько значений уже невозможно (работающая база с большой историей)

Заранее благодарю за помощь.

http://www.sql.ru/forum/1295253/kak-v-zaprose-vyvesti-pole-dopuskaushhee-neskolko-znacheniy-v-sostave-teksta


Microsoft Access создание формы

Среда, 06 Июня 2018 г. 01:07 + в цитатник
Есть некоторое количество таблиц.Имена всех внесены в отдельную таблицу.Как создать форму которая бы открывала эти таблицы в зависимости от выбора

http://www.sql.ru/forum/1295250/microsoft-access-sozdanie-formy


Как из Access корректно посмотреть папку "Исходящие" в Outlook

Вторник, 05 Июня 2018 г. 17:16 + в цитатник
Вроде ерундовая задача, но не могу побороть.
Суть в том, что я из Access 2010 отправляю сообщения через Outlook. При этом нужно убедиться, что сообщение действительно сформировалось (были случаи, когда они по какой-то причине они не формировались). Поэтому я проверяю, что сообщение появилось в папке "Исходящие" (или в "Отправленные"). Сообщения отправляются в автомате, их десятки-сотни, поэтому ждать когда они появятся в "Отправленных" нельзя - долго. Беда в том, что иногда сообщение переносится из "Исходящих" в "Отправленные" в промежуток времени, между тем, когда я проверяю наличие сообщений в папке и когда я обращаюсь к сообщению. Т.е. между строками
  If pOutbox.Items.Count > 0 Then
    If (pOutbox.Items(pOutbox.Items.Count).Subject = Subj) Then
Что тут можно придумать, кроме On Error Resume Next ?
Заранее премного благодарен
Вот процедура целиком:
Private Function SendIfor(ByVal Subj As String, ByVal Body As String, ByVal Addr As String) As Integer
Dim pApp As Outlook.Application
Dim pMail As Outlook.MailItem
Dim pNS As Outlook.NameSpace
Dim pOutbox As Outlook.Folder
Dim pSent As Outlook.Folder
 
 ' Формируем письмо
  Set pApp = New Outlook.Application
  Set pMail = pApp.CreateItem(0)
  Set pNS = pApp.GetNamespace("MAPI")
  Set pOutbox = pNS.GetDefaultFolder(olFolderOutbox)
  Set pSent = pNS.GetDefaultFolder(olFolderSentMail)
  pMail.To = Addr
  pMail.Subject = Subj
  pMail.BodyFormat = 2 ' HTML
  pMail.HTMLBody = Body
 
  ' Отправляем письмо
  pMail.Send
  DoEvents
 
  ' проверяем, что письмо попало в Исходящие или в Отправленные
  SendIfor = 1
  If pOutbox.Items.Count > 0 Then
    If (pOutbox.Items(pOutbox.Items.Count).Subject = Subj) Then
      SendIfor = 0
    End If
  End If
  If pSent.Items.Count > 0 Then
    If (pSent.Items(pSent.Items.Count).Subject = Subj) Then
      SendIfor = 0
    End If
  End If
 
  Set pMail = Nothing
  Set pApp = Nothing
  Set pNS = Nothing
  Set pOutbox = Nothing
  Set pSent = Nothing
 
End Function
 

http://www.sql.ru/forum/1295219/kak-iz-access-korrektno-posmotret-papku-ishodyashhie-v-outlook


Помогите написать запрос

Вторник, 05 Июня 2018 г. 16:10 + в цитатник
Доброго времени суток. Встала такая проблема. Есть таблица с полями ФИО, дата, филиал. Всего филиалов пять. Надо написать запрос чтобы в итоге выводились ФИО клиентов которые были и в филиале1 и допустим в филиале 3. Что то вообще в голову ничего не идет.

http://www.sql.ru/forum/1295203/pomogite-napisat-zapros


Microsoft Access

Вторник, 05 Июня 2018 г. 13:37 + в цитатник
Всем доброго времени суток.
У меня такая проблема. Сделал программу в delphi, к программе подключил сделанную БД в MSAccess, все это дело находилось на флешке в одной дирректории. Все готово. Хотел показать начальнику, мол програмка то корпортативного плана, вставил флешку а на производстве диск по другому называется (не F: а Е:). Пройдя домой я переименовал флешке карту и в Delphi в ADOCONNECTION исправил исходный путьфу к БД. Вроде бы все должно быть окей. Но запуская exe файл программы он выдаёт мне следующую ошибку: 'строка "f:/база данных" задаёт ошибочный путь...'
Подскажите пожалуйста что это может быть и как с этим бороться?

http://www.sql.ru/forum/1295177/microsoft-access


помогите найти ошибку , пишет invalid procedure call or argument

Вторник, 05 Июня 2018 г. 10:28 + в цитатник
Sub Тонколистовая_прокатка()
'объявление переменных
Dim i As Integer 'номер сечения
Dim ii As Integer 'номер нейтрального сечения
Dim n As Integer 'число разбиений очага деформации
Dim h0 As Double 'начальная толщина листа
Dim hn As Double 'конечная толщина листа
Dim h() As Double 'толщина листа в i-том сечении (массив)
Dim St0 As Double 'начальный предел текучести
Dim Stn As Double 'конечный предел текучести
Dim St() As Double 'предел текучести в i-том сечении (массив)
Dim q0 As Double 'уровень заднего натяжения
Dim qn As Double 'уровень переднего натяжения
Dim R As Double 'радиус рабочего валка
Dim a As Double 'коэффициент упрочнения
Dim b As Double 'коэффициент упрочнения
Dim alfa As Double 'угол захвата
Dim fi() As Double 'угол fi (массив)
Dim dx() As Double  'dx (массив)
Dim P1() As Double 'нормальные напряжения в зоне отставания
Dim P2() As Double 'нормальные напряжения в зоне опережения
Dim P() As Double 'напряжения для двух зон очага деформации
Dim PP As Double 'сумма нормальных напряжений
Dim PPP As Double 'полное усилие прокатки
Dim K0 As Double 'предел текучести на сдвиг начальный
Dim Kn As Double 'предел текучести на сдвиг конечный
Dim K() As Double 'предел текучести на сдвиг в i-том сечении
Dim m As Double 'коэффициент трения
Dim W As Double 'ширина листа

'присвоение переменным числовых значений из ячеек листа Excel
h0 = Range("D3").Value 'значение начальной толщины листа
hn = Range("D4").Value 'значение конечной толщины листа
W = Range("D5").Value 'значение ширины листа
St0 = Range("D6").Value 'значение начального предела текучести
q0 = Range("D7").Value 'значение уровня заднего натяжения
qn = Range("D8").Value 'значение уровня переднего натяжения
m = Range("D9").Value 'значение коэффициента трения
a = Range("D10").Value 'значение коэффициента упрочнения a
b = Range("D11").Value 'значение коэффициента упрочнения b
R = Range("D12").Value 'значение радиуса рабочего валка
n = Range("D13").Value 'число разбиений очага деформации

'объявление массива
ReDim fi(0 To n) As Double
ReDim h(0 To n) As Double
ReDim dx(0 To n) As Double
ReDim St(0 To n) As Double
ReDim K(0 To n) As Double
ReDim P1(0 To n) As Double
ReDim P2(0 To n) As Double
ReDim P(0 To n) As Double

Stn = St0 + a * ((h0 - hn) / h0) ^ b 'формула(22)
Kn = Stn / Sqr(3) 'формула(21)
K0 = St0 / Sqr(3) 'формула(19)
alfa = 2 * Atn(Sqr((h0 - hn) / (4 * R - (h0 - hn)))) 'формула (8)

i = 1 'расчет для зоны отставания от i=1 до i=n
1: fi(i) = alfa * (n - i) / n 'формула(7)
   h(i) = hn + 2 * R * (1 - Cos(fi(i))) 'формула(6)
   fi(0) = alfa
   dx(i) = R * (Sin(fi(i - 1)) - Sin(fi(i))) 'формула(5)
   St(i) = St0 + a * ((h0 - h(i)) / h0) ^ b 'формула(12)
   K(i) = St(i) / Sqr(3) 'формула(11)
   P1(0) = 2 * K0 - q0 * St0 'формула (18)
   h(0) = h(0)
   K(0) = K(0)
   P1(i) = (P1(i - 1) * h(i - 1) - 2 * K(i - 1) * h(i - 1) + 2 * K(i) * h(i)) / (h(i) + 2 * dx(i) * Tan(fi(i)) - 2 * m * dx(i)) 'формула(14)
   If m * P1(i) <= K(i) Then
   P1(i) = P1(i)
   Else
   P1(i) = (P1(i - 1) * h(i - 1) - 2 * K(i - 1) * h(i - 1) + 2 * K(i) * h(i)) / (h(i) + 2 * dx(i) * Tan(fi(i))) 'формула (15)
   End If
   If i < n Then
   i = i + 1
   GoTo 1
   End If
   i = n - 1 'расчет для зоны опережения от i=n-1 до i=ii
2: fi(n) = 0
   fi(i) = alfa * (n - i) / n 'формула(7)
   h(i) = hn + 2 * R * (1 - Cos(fi(i))) 'формула(6)
   dx(i) = R * (Sin(fi(i)) - Sin(fi(i + 1))) 'формула(5)
   St(i) = St0 + a * ((h0 - h(i)) / h0) ^ b 'формула(12) <------ ПИШЕТ ЧТО ТУТ ОШИБКА  
   St(n) = Stn
   K(i) = St(i) / Sqr(3) 'формула(11)
   P2(n) = 2 * Kn - qn * Stn 'формула(20)
   h(n) = hn
   K(n) = Kn
   dx(n) = 0
   P2(i) = (P2(i + 1) * (h(i + 1) + 2 * dx(i + 1) * Tan(fi(i + 1)) + 2 * m * dx(i + 1)) + 2 * K(i) + h(i) - 2 * K(i + 1) * h(i + 1)) / h(i) 'формула(16)
   If m * P2(i) <= K(i) Then
   P2(i) = P2(i)
   Else
   P2(i) = (P2(i + 1) * (h(i + 1) + 2 * dx(i + 1) * Tan(fi(i + 1)) + 2 * K(i) * h(i) - 2 * K(i + 1) * (h(i + 1) - dx(i + 1)))) / h(i) 'формула(17)
   End If
   If P1(i) - P2(i) <= 0 Then
   ii = i
   Else
   i = i - 1
   GoTo 2
   End If
   
   PP = 0
   For i = o To n
   If i < ii Then
   P(i) = P1(i)
   Else
   P(i) = P2(i)
   End If
   PP = PP + P(i)
   Next i
   PPP = PP * W * alfa * R / n * 10 / 1000000 'полное усидие в МН
   
   'вывод результатов расчета на лист Excel
   For i = 0 To n
   Cells(3 + i, 7).Value = i
   Cells(3 + i, 8).Value = Sqr(R * (h0 - hn)) * i / n 'длина очага деформации
   Cells(3 + i, 9).Value = P(i) 'контактные нормальные напряжения
   Next i
   Cells(3, 11).Value = PPP 'полное усилие
End Sub

http://www.sql.ru/forum/1295155/pomogite-nayti-oshibku-pishet-invalid-procedure-call-or-argument


RecordSource подчиненной формы

Понедельник, 04 Июня 2018 г. 20:31 + в цитатник
Приветствую всех.
Пытаюсь сделать общий вид поисковой формы с полями для выборки данных для обеих форм – Формы2 и ее подчиненной Формы3. Т.е. суть такая – на Форме1 находится Форма2, в которой по «+» раскрываются записи подчиненной Формы3.

Принцип построения такой – есть общая свободная Форма1 с полями и комбобоксами, по которым делается общая выборка данных для обеих форм (обе в режиме таблицы): Форма2 – главная и Форма3 – подчиненная. Форма2 так же расположена на Форме1. Форма2 и Форма3 между собой связаны по полю кода – связь 1 ко многим.

Общий запрос состоит из 2-х таблиц (связь 1 ко многим), использую его для подчиненной Формы3, а в главной Форме2 вывожу запрос с полями только первой части общего запроса. Т.е. получается, что запрос для Формы2 я строю из запроса к Форме3.

В коде VBA, по выбранным полям на Форме1, я собираю 2 массива и получаю 2 переменные для выборки данных в запросах к Форме2 и Форме3. Дальше начинается сама проблема, из кода Формы1 присвоить полученный RecordSource для Формы2 получается, а для Формы3 нет.
Вот часть кода, где пытаюсь присвоить формам RecordSource с полученной выборкой данных к Форме2 и Форме3:
+

Private Sub ПоискПоПолям()
  Dim strSQL As String
  Dim rst As Recordset

On Error GoTo ErrNumber
  strWHERE1 = "": strWHERE2 = ""
  ...
  ...
  strSQL = "SELECT * FROM звПоиск"
  If Not strWHERE1 = "" Then
    If Not strWHERE2 = "" Then
      strWHERE = strWHERE1 & " AND " & strWHERE2
    Else
      strWHERE = strWHERE1
    End If
    strSQL = strSQL & " WHERE " & strWHERE
    Set rst = CurrentDb.OpenRecordset(strSQL)
    If rst.RecordCount <> 0 Then
      Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE " & strWHERE1
'???как обновить RecordSource "фпПоискМИЦОВИВ"
'      Form_фпПоискМИЦОВИВ.RecordSource = strSQL '- не работает,т.е.обновление не происходит
'      Me!фпПоискЗаявок.Controls!фпПоискМИЦОВИВ.Form.RecordSource = strSQL 'ошибка 2455 - Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
'      Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Form.RecordSource = strSQL 'ошибка 2455
    Else
      Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE [КодЗаявки] Is Null"
    End If
  ElseIf Not strWHERE2 = "" Then
    strWHERE = strWHERE2
    strSQL = strSQL & " WHERE " & strWHERE
    Set rst = CurrentDb.OpenRecordset(strSQL)
    If rst.RecordCount <> 0 Then
      rst.MoveFirst
      strWHERE1 = "[КодЗаявки] = " & rst.Fields("КодЗаявки").Value
      Do Until rst.EOF
        strWHERE1 = strWHERE1 & " OR " & "[КодЗаявки] = " & rst.Fields("КодЗаявки").Value
        rst.MoveNext
      Loop
      Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE " & strWHERE1
'???как обновить RecordSource "фпПоискМИЦОВИВ"
'      Form_фпПоискМИЦОВИВ.RecordSource = strSQL '- не работает,т.е.обновление не происходит
'      Me!фпПоискЗаявок.Controls!фпПоискМИЦОВИВ.Form.RecordSource = strSQL 'ошибка 2455 - Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
'      Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Form.RecordSource = strSQL 'ошибка 2455
    Else
      Me.фпПоискЗаявок.Form.RecordSource = "SELECT DISTINCT * FROM звПоискЗаявок WHERE [КодЗаявки] Is Null"
    End If
  End If
  rst.Close
'  Call Form_фпПоискЗаявок.ПоискПоПолям(strSQL)
'  Call Form_фпПоискМИЦОВИВ.ПоискПоПолям(strSQL)
'  Me!фпПоискЗаявок.Controls!фпПоискМИЦОВИВ.Requery 'ошибка 2455 - Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
'  Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Requery 'ошибка 2455
'  Form_фпПоискМИЦОВИВ.Requery '- не работает,т.е.обновление не происходит
  Me.фпПоискЗаявок.Requery

ExitHeare:
  Set rst = Nothing
  Erase arrWHERE2
  Erase arrWHERE1
Exit Sub

ErrNumber:
  Select Case Err.Number
    Case 2455 'Введенное выражение содержит недопустимую ссылку на свойство "Form/Report"
      MsgBox "Процедура: ПоискПоПолям. Форма: " & Me.Name & vbCrLf & _
        Err.Description, , "№ " & Err.Number
      
'      Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Form.RecordSource = strSQL
'      Me.фпПоискЗаявок.Parent!фпПоискМИЦОВИВ.Requery
'      Me.фпПоискЗаявок.Requery
      
      Resume ExitHeare
    Case Else
      MsgBox "Процедура: ПоискПоПолям. Форма: " & Me.Name & vbCrLf & _
        Err.Description, , "№ " & Err.Number
      Resume ExitHeare
  End Select
End Sub


А и еще такой момент, при открытии общей Формы1 по умолчанию присваиваю Форме2 RecordSource со значением «Is Null», чтобы изначально записи были скрыты.

Заранее признательна за помощь.

http://www.sql.ru/forum/1295117/recordsource-podchinennoy-formy


Присвоение значения текстовому полю по выбранному ключу в combobox в одной форме

Понедельник, 04 Июня 2018 г. 11:28 + в цитатник
Всем доброго продуктивного дня.

Есть список должностных лиц в таблице и ключом для каждой записи в таблице.

Моя цель - заполнить текстовые поля в форме (Форма_1), чтобы пользователь видел данные по выбранному должностному лицу.

Из данных вношу ключ (№) и имя должностного лица (FIO) в Combobox (ДЛ_Combobox) с помощью простого Select запроса, делаю ширину первого столбца 0, чтобы скрыть от глаз ключ, выбрано должностное лицо.

Дальше создал TextBox, который через функцию DLookUp будет доставать значение поля Comment через SQL запрос при выбранном ключе (№) в Combobox.

Select Distinct Comment
from DL
where DL.[№] = [Формы].[Форма_1].[ДЛ_Combobox]

Беда в том, что при попытке достать данные в TextBox через найденный ключ Access ругается по поводу неверного или слишком сложного запроса.

Пробовал TextBox заменить на Combobox - все равно Access ругается : не нравится ему выражение DL.[№] = [Формы].[Форма_1].[ДЛ_Combobox]

Помогите пожалуйста понять ошибку. Спасибо

http://www.sql.ru/forum/1295040/prisvoenie-znacheniya-tekstovomu-polu-po-vybrannomu-kluchu-v-combobox-v-odnoy-forme


UPDATE из VBA в текстовое поле не записывает буквенную строку, но записывает цифровую

Понедельник, 04 Июня 2018 г. 10:46 + в цитатник
Здравствуйте.
Тескт в модуле формы:
Dim strSQL As String, ss As String

ss = "hgg"  ' Вариант строки 1
ss = "123"  ' Вариант строки 2 

strSQL = "UPDATE tbl1 SET tbl1.txt = " & """hgg""" & " WHERE (((tbl1.COD)=2));" ' Работает
strSQL = "UPDATE tbl1 SET tbl1.txt = " & ss & " WHERE (((tbl1.COD)=2));"  ' Работает только с вариантом 2

DoCmd.RunSQL strSQL 


При буквенных символах запрос распознает строку как параметр и требует его значение (Аксесс 97 и Аксесс 2010).
Как записать буквы?

http://www.sql.ru/forum/1295036/update-iz-vba-v-tekstovoe-pole-ne-zapisyvaet-bukvennuu-stroku-no-zapisyvaet-cifrovuu


Добавление кнопки Фильтр на разделенную форму

Воскресенье, 03 Июня 2018 г. 16:36 + в цитатник
Каким образом можно правильно добавить кнопки Изменить фильтр и Фильтр на разделенную форму?

При выполнении Макроса Фильтр или команды DoCmd.RunCommand acCmdFilterByForm блокируются все клавиши.
Как выйти из этого режима и применить заданный фильтр?

Если явно указать КлавишаПрименитьФильтр.Enabled = True, кнопка доступна, но событие не отрабатывает.

Есть ощущение, что существует какое-то элементарное штатное решение, но пока все поиски ни к чему не привели.

Заранее спасибо.

http://www.sql.ru/forum/1295008/dobavlenie-knopki-filtr-na-razdelennuu-formu


Экземпляры форм: призываются П-Л, nord-wolf

Пятница, 01 Июня 2018 г. 16:04 + в цитатник
Никогда особо не увлекался экземлярами форм, но тут вспомнил было, на 3 недели попал в access отдел и решил наваять от души.
Столкнулся с рядом неожиданных проблем, одна из которых выглядит примерно так:
* если в экземпляре формы есть подчиненная форма, то у этой подчиненной формы при смене источника данных ничего не происходит. То есть код вида:

me.subfrm.form.recordsource = strsql


форма просто отображается пустой. Но при этом что то типа:

me.subfrm.form.Filter = "id=1"
me.subfrm.form.FilterOn = true


Вполне себе отрабатывает. Пробовал с подчиненной формой ленточного и табличного вида. Ms Access 97. Экземпляр формы открывается
как

Set frm = New Form_frmTest


Кто-нибудь сталкивался?

http://www.sql.ru/forum/1294934/ekzemplyary-form-prizyvautsya-p-l-nord-wolf


Ошибка с функцией DCount

Пятница, 01 Июня 2018 г. 12:20 + в цитатник
Всем доброго времени! Вот всё бьюсь с отчётом, где функция DCount постоянно выдаёт ошибку. В чём дело, никак не могу понять. Менял и кавычки, ставил скобки, добавлял таблицу, но всегда - #ошибка!
Вот формула, которую вставляю в поле отчёта: =DCount("[КодПосетителя]";"Посетители";"[Пол] = 'мужской'")
Менял на: =DCount("[КодПосетителя]";"[Посетители]";"[Пол] = 'мужской'")
Менял на такую: =DCount("[Посетители]![КодПосетителя]";"Посетители";"[Посетители]![Пол] = 'мужской'")
удалял кавычки: =DCount("[Посетители]![КодПосетителя]";"Посетители";"[Посетители]![Пол] = мужской")
Всё одно - #ошибка. Что делать?

http://www.sql.ru/forum/1294908/oshibka-s-funkciey-dcount


Изменение данных в таблице с помощью UPDATE

Пятница, 01 Июня 2018 г. 11:35 + в цитатник
Имеется БД Библиотека.Программирую кнопку на добавление новой книги в базу
Картинка с другого сайта.
Не могу написать кусок кода (Пользователь вводит данные о книги и необходимо проверить: если есть книга с такими же параметрами, то в колонке «В наличие» нужно добавить +1, а если нет такой книги, то добавить, как новую в список книг в базу). Чтоб добавить новую книгу я сделала, а кусок кода на добавление такой же книги не работает.
Private Sub CommandButton1_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim com, tip As String
Dim name, author, genre, izd, year, t As String
 If cn Is Nothing Then
        Set cn = New ADODB.Connection
        cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Елена\Desktop\27.05\БД_библиотека1.accdb"
        cn.Open
 End If
 
 If rs Is Nothing Then
        Set rs = New ADODB.Recordset
    End If
        
    If rs.State = 1 Then
        rs.Close
    End If
    
    com = "SELECT * FROM Книги WHERE "
    name = rs.Fields(1).Value
    author = rs.Fields(2).Value
    genre = rs.Fields(3).Value
    izd = rs.Fields(4).Value
    year = rs.Fields(5).Value
    t = rs.Fields(6).Value
If (TextBox1.text = name And TextBox2.text = author And ComboBox1.text = genre And TextBox4.text = izd And TextBox5.text = year And ComboBox2.text = t) Then
        com = "UPDATE Книги SET Вналичие=Вналичие + 1"
Else
    
   com = "INSERT INTO Книги (Название,Автор,Жанр,Издательство,ГодИздания,ТипПИ)VALUES ('" & TextBox1.text & "', '" & TextBox2.text & "', '" & ComboBox1.text & "', '" & TextBox4.text & "', '" & TextBox5.text & "', '" & ComboBox2.text & "');"
    rs.Open com, cn
    TextBox1.text = ""
    TextBox2.text = ""
    ComboBox1.text = ""
    TextBox4.text = ""
    TextBox5.text = ""
    ComboBox2.text = ""
End If

End Sub

http://www.sql.ru/forum/1294893/izmenenie-dannyh-v-tablice-s-pomoshhu-update


Программный импорт таблиц из Access

Четверг, 31 Мая 2018 г. 12:03 + в цитатник
Суть в том, что вместо сохранения операций импорта и повторного вызова, мне нужно выполнить этот импорт автоматически для всех таблиц из указанного файла (см. вложенный ролик: https://1drv.ms/u/s!AgdIKAjNMjI9gupviQ-TzRGMc4-TAQ)

http://www.sql.ru/forum/1294781/programmnyy-import-tablic-iz-access


как программно переименовать таблицу во внешней БД

Четверг, 31 Мая 2018 г. 02:37 + в цитатник
Привет всем
Мне нужно переименовать таблицу в базе данных, которая находится в другом файле
Мне известен только один метод:
DoCmd.Rename "newName", acTable, "oldName"
, но он для текущей БД

http://www.sql.ru/forum/1294753/kak-programmno-pereimenovat-tablicu-vo-vneshney-bd



Поиск сообщений в rss_sql_ru_access_programming
Страницы: 353 ... 310 309 [308] 307 306 ..
.. 1 Календарь