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

Поиск сообщений в 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 ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

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

Сравнить две таблицы в ACCESS 2013 при помощи VBA

Четверг, 02 Августа 2018 г. 17:33 + в цитатник
Доброго дня!
Работаю с таблицами БД, которые достались по наследству.
Необходимо сравнить таблицу 1 (например по значению столбца 7) с таблицей 2 (столбец 7).
Если позиция отсутствует в табл.2, то в таблице 1, например в столбце 8 проставить цифру 777.

Ранее программировал в VBA EXCEL.
В VBA EXCEL это выглядело бы так:

Sub ПОИСК()
X1 = 2
X11 = 5984
X2 = 2
X22 = 6292

For XX1 = X1 To X11
Z1 = Sheets(1).Cells(XX1, 7)
FL = 0
For XX2 = X2 To X22
Z2 = Sheets(2).Cells(XX2, 7)

If Z1 = Z2 Then FL = 1

Next XX2
If FL <> 1 Then
Sheets(1).Cells(XX1, 7)=777
End If
Next XX1

End Sub


Как это может выглядеть в ACCESS (должно быть что-то похожее - и там и там VBA) ?

Если что - тапками и ботинками прошу не кидаться...)))

http://www.sql.ru/forum/1300310/sravnit-dve-tablicy-v-access-2013-pri-pomoshhi-vba


ADO и локальная таблица Access

Четверг, 02 Августа 2018 г. 13:25 + в цитатник
Уважаемые знатоки.

tblLocal - локальная таблица в Access
tblServer - таблица на сервере (прилинковать их не получается)

Запрос вида

INSERT INTO tblLocal(F1, F2) SELECT F1, F2 FROM [ODBC;Driver={SQL Server};Server=...;Database=...;UID=...;PWD=...;].tblServer

работает прекрасно, но интересует обратная ситуация:

Set obDB = New ADODB.Connection
With obDB
        .Provider = "SQLOLEDB"
        .ConnectionString = "User ID=...;Password=...;DATA SOURCE=...;INITIAL CATALOG=..."
        .Open
End With
Set obReport = New ADODB.Recordset
With obReport
      .ActiveConnection = obDB
      .Open INSERT INTO tblLocal(F1, F2) SELECT F1, F2 FROM tblServer
End With


Можно ли как-то указать локальную таблицу в таком запросе и если можно, то как это сделать?

http://www.sql.ru/forum/1300269/ado-i-lokalnaya-tablica-access


проблема совместимости разных версий

Среда, 01 Августа 2018 г. 12:14 + в цитатник
Добрый день

Недавно добавил в базу access возможность экспорта данных в эксель, для этого пришлось подключить библиотеку Microsoft Excel 16.0 Object Library. Проблема в том, что у меня довольно новая версия excel стоит и более старую версию библиотек выбрать нельзя - в списке только один вариант. После добавления библиотек, на компах со старым офисом база запускаться перестала.
Пробовал на старом офисе подключить старые библиотеки, но при запуске базы на машине с новым офисом версия библиотек автоматически меняется и при последующем запуске со старого офиса опять та же проблема возникает.

Понятно, что есть выходы: 1) поставить на все машины одну версию офиса
2) пилить базу на старом офисе, тогда при распространении ее копий на более новых версиях офиса все будет работать
Только у этих вариантов есть недостатки: если базу придется поменять на новой версии офиса - она уже не будет работать на старой. Придется лезть в references и заново подключать библиотеку.

Подскажите, есть ли какой-то более универсальный вариант решения проблемы? Поиск в гугле простых решений не обнаружил...

http://www.sql.ru/forum/1300174/problema-sovmestimosti-raznyh-versiy


Пример убитой формы

Среда, 01 Августа 2018 г. 11:35 + в цитатник
После внесения изменений форма отказалась работать. Не помогло ни сжатие, ни декомпиляция, ни очистка от мусора, ни копирование в чистую базу.

Форму я сделал заново. А это пример испорченной формы. Может кто-нибудь найдёт способ с этим бороться? Так, небольшое развлечение на досуге.

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

http://www.sql.ru/forum/1300169/primer-ubitoy-formy


Разноуровневый список: сортировка в запросе

Вторник, 31 Июля 2018 г. 15:02 + в цитатник
Здравствуй, Форум

Хочу спросить Вас, как можно решить такую проблему:
Дано таблица с пунктами нормативной документации:
IDПункЗначения
21.
42.
53.3.
75.1.1.
95.1.17.
85.1.7.

Как можно сделать запрос чтобы список был по порядку возрастания (По лоГГике, а не по значению символа), исключая такие случаи:
95.1.17.
85.1.7.

из теоретических размышлений:
1. Заставлять людей ставить нули в нужных местах (но они всё равно не знают сколько их нужно)
2. Как то распарсивать, но понятия нет ни как это делать вообще, ни как это реализовать в sql запросе
____
vk.com/taenfox

http://www.sql.ru/forum/1300098/raznourovnevyy-spisok-sortirovka-v-zaprose


Не видит таблицу БД при разделении

Вторник, 31 Июля 2018 г. 09:30 + в цитатник
Добрый день!
По наследству досталась БД, которую нужно разделить (для использования несколькими пользователями).
НО, при разделении ACCESS 2013 не видит таблицу. Более того, эта таблица не отображается на вкладке ВСЕ ТАБЛИЦЫ. Я выхожу на эту таблицу только через СХЕМЫ ДАННЫХ - КОНСТРУКТОР ТАБЛИЦ-РЕЖИМ ТАБЛИЦЫ.

Как можно сделать, чтобы таблица отображалась на вкладке ВСЕ ТАБЛИЦЫ.

(Ранее занимался программированием VBA EXCEL, в ACCESS перешёл недавно - если что, прошу не кидаться тапками)))

http://www.sql.ru/forum/1300052/ne-vidit-tablicu-bd-pri-razdelenii


Маска ввода

Понедельник, 30 Июля 2018 г. 16:08 + в цитатник
Здравствуйте.

Не могу разобраться с маской.
Поле - дата и время, но дело в том, что время иногда надо ставить, а иногда не надо. То есть нужно, чтобы стояла маска для даты и времени, но чтобы можно было ввести только дату, нажать Enter, и чтобы он не требовал вводить время.
Не могли бы подсказать?

http://www.sql.ru/forum/1299993/maska-vvoda


sql запрос

Понедельник, 30 Июля 2018 г. 11:33 + в цитатник
Никак не пойму как сделать запрос. Есть таблица "Оказанные услуги", есть "Оплата" этих услуг. Может быть несколько записей Оплаты на одну Оказанную услугу, может не быть вообще. В Оказанных услугах есть Код клиента. Нужно сделать выборку "Код клиента" и его долг (СтоимостьУслуги - сумма его платежей).

SELECT [Оказанные услуги].КодКлиента, Sum(Оплата.СуммаОплаты) AS paid
FROM [Оказанные услуги] LEFT JOIN Оплата ON [Оказанные услуги].Код = Оплата.КодУслуги
GROUP BY [Оказанные услуги].КодКлиента;

куда здесь вставить Стоимость услуги, внутрь суммы не получится,будет считать неправильно, снаружи Стоимость услуги-Sum, то выражение не будет частью статистической функции или группы

Попробовал сделать так

SELECT [Оказанные услуги].КодКлиента, ([Оказанные услуги].СуммаОплаты-Nz((SELECT Sum(Оплата.СуммаОплаты) AS [Sum-СуммаОплаты] FROM [Оплата] where Оплата.КодУслуги=[Оказанные услуги].Код),0)) AS debt
FROM [Оказанные услуги], Оплата
GROUP BY [Оказанные услуги].КодКлиента, [Оказанные услуги].Код, [Оказанные услуги].СуммаОплаты;
считает правильно, но не могу сгруппировать по Коду клиента, если убрать из группировки Код и Сумму Оплаты, тогда вложенный селект будет ругаться

http://www.sql.ru/forum/1299952/sql-zapros


Добавление в форму по фамилии, а не по ключу.

Воскресенье, 29 Июля 2018 г. 09:20 + в цитатник
На форме есть поле Код врача и поле Фамилия. Чтобы определилась фамилия, надо ввести код врача, естественно это не удобно пользователю. Как можно обойти ситуацию ? Пробовал списком, но не срастается.

http://www.sql.ru/forum/1299899/dobavlenie-v-formu-po-familii-a-ne-po-kluchu


Условие отбора запроса : текущая запись.

Суббота, 28 Июля 2018 г. 19:12 + в цитатник
На форме будет кнопка Добавить. По нажатию запрос копирует текущее значение ID открытой записи и копирует в соответствующий столбец в другой таблице. Понятное дело, что это запрос на добавление, но как в условиях отбора указать "Текущее значение поле", потому что без условия запрос копирует всё.

http://www.sql.ru/forum/1299877/uslovie-otbora-zaprosa-tekushhaya-zapis


Ошибка подключения к ORACLE после переустановки Win10

Пятница, 27 Июля 2018 г. 21:46 + в цитатник
В общем пришлось переустановить винду. После этого не получается законнектиться к БД ORACLE. Пол дня уже бьюсь не пойму куда смотреть и что исправлять, т.к. до этого проблем с подключением не было. Сообщение Error while trying to retrieve text for error ORA-01019
Строка подключения:
strCon = "Driver={Microsoft ODBC for Oracle}; Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=******)(PORT=1521))(CONNECT_DATA=(SID=oss))); Uid=***;Pwd=***;"

http://www.sql.ru/forum/1299840/oshibka-podklucheniya-k-oracle-posle-pereustanovki-win10


Ленточная форма с полями со списком и вычисляемые поля

Пятница, 27 Июля 2018 г. 12:58 + в цитатник
Здравствуйте! У меня вот какой вопрос - смотрите, вот я создал 2 формы - основную и подчинённую. И включил для неё ленточный режим. Меня он устраивает. Все другие режимы не подходят. Но не устраивает меня только то, что этот ленточный режим идёт по вертикали. А как сделать по горизонтали, чтобы эти 6 маленьких табличек распологались одни за другими, но не по вертикали, а по горизонтали?

http://www.sql.ru/forum/1299801/lentochnaya-forma-s-polyami-so-spiskom-i-vychislyaemye-polya


Запрос - групировка с выводом разных значений в строке

Пятница, 27 Июля 2018 г. 08:47 + в цитатник
Есть таблица TAB1 вида

NU | USR
1 | 10
1 | 20
1 | 30
2 | 40
2 | 50
как сделать так:

NU | USR
1 | 10,20,30
2 | 40, 60

http://www.sql.ru/forum/1299761/zapros-grupirovka-s-vyvodom-raznyh-znacheniy-v-stroke


Установка нужной даты

Среда, 25 Июля 2018 г. 15:28 + в цитатник
Подскажите, пожалуйста.

Форма предполагает внесение данных, для некоторых из них значение поля trans_date будет одинаковой.

Например, для первых 20-ти записей будет дата 23.07.2018, а для остальных 15 - 24.07.2018.

Как можно реализовать установку значения trans_date так, чтобы оно было постоянным до того момента, пока не введется новое?

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

Спасибо.

http://www.sql.ru/forum/1299581/ustanovka-nuzhnoy-daty


Письмо в Word / замена текста

Среда, 25 Июля 2018 г. 15:02 + в цитатник
Добрый день, Уважаемые форумчане!

Слёзно прошу поскорее помочь разобраться как прально из под акса с вордом общаться
Из интернетов и поисков по форуму скомпоновал такую конструкцию:
Sub imprtMl(mail As Long)
Dim Fname, FnameTmp, sql, list As String
Dim rs_ml, rs_pl, rs_auth As DAO.Recordset
Dim objWord As Object 'Word.Application
    On Error Resume Next
    Set objWord = GetObject(, "Word.Application")
    If objWord Is Nothing Then
        Set objWord = CreateObject("Word.Application")
        If objWord Is Nothing Then
            MsgBox "MS Word is not installed on your computer"
        End If
    End If
    objWord.Visible = True

sql = "Select * from pln_mail "
Set rs_ml = CurrentDb.OpenRecordset(pln_sql)
Set rs_pl = CurrentDb.OpenRecordset("list_for_mail")
Set rs_auth = CurrentDb.OpenRecordset("Property Auth")
rs_pl.FindFirst "pln_main.ml = " & mail
rs_ml.FindFirst "ID = " & mail
rs_auth.FindFirst "id = " & rs_ml!reg

Do While rs_pl.NoMatch = False
        list = list & rs_pl!IDobj & rs_pl!type_obj & rs_pl!shortname & _
             rs_pl!yr & rs_pl!type_work & rs_pl!type_kpp & _
             rs_pl!namemn & rs_pl!KM & rs_pl!type_line & vbCrLf
        rs_pl.FindNext "pln_main.ml = " & mail
Loop

FnameTmp = "\\CPS01-FSDFS-01\Files\Documents\Ml_Remarks_01.docx"
Fname = "C:\Users\Desktop\testdoc.docx"
    objWord.Open FnameTmp
    objWord.Documents.Add (FnameTmp)
    
    
    objWord.ActiveDocument.SaveAs Fname


With objWord.Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Wrap = objWord.wdFindContinue
    .Forward = True
    .Text = "%SPEC%"
    Do While .Execute = True
        .Parent.HomeKey Unit:=objWord.wdLine
        .Parent.MoveDown Unit:=objWord.wdLine, Count:=2, Extend:=objWord.wdMove
    Loop
    .InsertAfter rs_auth!ToSpec
End With
'///////////дальше вдохновение кончилось//////////

Set rs_pl = Nothing
Set rs_ml = Nothing
Set rs_auth = Nothing
End Sub


Таким образом у меня следующая картинка маслом:
1. Открыть приложение
2. Открыть файл-шаблон
3. Найти заменяемые слова
//////я сейчас тут///////////
4. Заменить их на рабочие строки
5. PROFIT

Помогите пожалуйста закончить эту штуку и подскажите как правильно рукой водить синеньким из под красненького!

PS: огрехи кода типа бессмысленной переменной sql вижу, просто переписывать буду потом

____
vk.com/taenfox

http://www.sql.ru/forum/1299575/pismo-v-word-zamena-teksta


On Error не работает

Среда, 25 Июля 2018 г. 13:21 + в цитатник
Добрый день! столкнулся с проблемой при использовании обработчика ошибок: есть две формы к которым я обращаюсь в своей процедуре, если формы не открыт то появляется ошибка 2450, на формах есть галочки состояние которых я проверяю в коде( т.е. отмечена или нет) почему то если ее не активировать то появляется ошибка 13(не определен тип), можно просто поставить и снять галку и все ок, но я хотел написать обработчик, что бы при возникновении этих ошибок программ перескакивал дальше и работала. Получается так:
при обращении к форме 1 появляется ошибка 2450- не найдена форма, обработчик ошибок ловит ее, появляется сообщение откройте форму, открываю форму иду далее, появляется вторая ошибка - 13, обработчик ее ловит перескакиваю иду дальше, обращаюсь ко второй форме - опять появляется ошибка 2450, но ее уже почему то обработчик не ловит и не обрабатывает, в чем дело не пойму, может кто то сталкивался с эти????

Private Sub акт_пп_ремкомплект_Click()
Dim №заявки, №кса, w As String
Dim Data As Date
On Error GoTo error1

№заявки = Forms![ФЗаявки]![№заявки]
№кса = Forms![ФЗаявки]![КСА].Column(1)
Data = Forms![ФЗаявки]![Дата]
Me.Dirty = False



If Forms![Ф_движениеТС]![Ф_З_акт_пп].Value = True Then
Forms![Ф_движениеТС]![акт п/п].SetFocus
w = Forms![Ф_движениеТС]![акт п/п].Text
Else
w = Left(№кса, 2) + "/-Р-" + Right(Data, 2)
End If

m1:
If Forms![Ф_движение РемКомплектов]![Ф_З_акт_пп_рем].Value = True Then
Forms![Ф_движение РемКомплектов]![акт п/п №].SetFocus
w = Forms![Ф_движение РемКомплектов]![акт п/п №].Text
Else
w = Left(№кса, 2) + "/-Р-" + Right(Data, 2)
End If

m2:

DoCmd.OpenForm "Ф_движение РемКомплектов"
DoCmd.RunCommand acCmdRefresh
DoCmd.GoToRecord , , acNewRec

Forms![Ф_движение РемКомплектов]![Дата].SetFocus
Forms![Ф_движение РемКомплектов]![Дата].Text = Data

Forms![Ф_движение РемКомплектов]![акт п/п №].SetFocus
Forms![Ф_движение РемКомплектов]![акт п/п №].Text = w

Forms![Ф_движение РемКомплектов]![Передан в].SetFocus
Forms![Ф_движение РемКомплектов]![Передан в].Text = №кса

Forms![Ф_движение РемКомплектов]![Передал].SetFocus
Forms![Ф_движение РемКомплектов]![Передал].Text = "Королев"

Forms![Ф_движение РемКомплектов]![Основание].SetFocus
Forms![Ф_движение РемКомплектов]![Основание].Text = "Ремонт ТС"

Forms![Ф_движение РемКомплектов]![Заявка№].SetFocus
Forms![Ф_движение РемКомплектов]![Заявка№].Text = №заявки
m = 0


Exit Sub

error1:

Select Case Err.Number
Case 13

m = m + 1
w = Left(№кса, 2) + "/-Р-" + Right(Data, 2)
If m = 1 Then
GoTo m1
Else
GoTo m2
End If


Case 2450
msg = "Необходимо открыть формы 'Ф_движениеТС, Ф_движение РемКомплектов'"
title = "Внимание!"
ms = MsgBox(msg, vbOKOnly, title)
On Error GoTo 0
Err.Clear

Exit Sub
End Select




End Sub

http://www.sql.ru/forum/1299556/on-error-ne-rabotaet


Закрытие формы при помощи API

Среда, 25 Июля 2018 г. 12:46 + в цитатник
Закрыть форму можно двумя способами.

1. Нажать на кнопку с "Х" в меню формы
2. Выполнить команду VBA по закрытию формы

При закрытии формы последовательно происходят два события Unload и Close. Событие Unload имеет параметр Cancel типа Integer. Если в процессе выполнения кода, расположенного в секции Private Sub Form_Unload(Cancel As Integer) присвоить переменной Cancel значение True, то процедура закрытия формы будет прервана. Если же оставить переменной Cancel значение False, то закрытие формы будет продолжено.

Но можно закрыть форму и при помощи API. Вот так
'Разместите на форме CommandButton и вставьте следующий код:
	Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long


	Private Sub Command_Click()
              DestroyWindow Me.hwnd
	End Sub
При этом события Unload не происходит, а сразу выполняется событие Close. Что думаете о таком способе закрытия формы? И на сколько он корректен?
-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?

http://www.sql.ru/forum/1299549/zakrytie-formy-pri-pomoshhi-api


Как хранить, отображать, редактировать конфигурацию (настройки)?

Вторник, 24 Июля 2018 г. 15:08 + в цитатник
Есть таблица пользователей, таблица объектов. Объекты по каждому пользователю могут иметь массу различных настроек (с различными типами данных: число, текст, логическая...).
Как организовать таблицы, чтобы можно было их отображать и редактировать на форме, фильтруя по объекту и пользователю?

http://www.sql.ru/forum/1299491/kak-hranit-otobrazhat-redaktirovat-konfiguraciu-nastroyki


Невозможно обновить поле

Вторник, 24 Июля 2018 г. 13:09 + в цитатник
Добрый день!
Мне в наследство досталась БД, которую надо оптимизировать - перевести на odbc с работой через MS SQL Server.

В данной БД есть одна форма. при выполнении команды "Новая (пустая) запись" возникает следующая ситуация: при внесении изменения в любое поле формы выдается ошибка: "невозможно обновить поле" - после этого форма переводится в режим редактирования и продолжается работа корректно.

Каким образом решить данную ошибку? Заранее спасибо

http://www.sql.ru/forum/1299479/nevozmozhno-obnovit-pole


Странная фигня с прилинкованными таблицами

Вторник, 24 Июля 2018 г. 12:26 + в цитатник
Уважаемый форум,

Нужна помощь: есть Акс 2016 с линкованными таблицами с SQL Server. При старте приложения происходит обмен данными между локальными и линкованными таблицами в цикле по всем линкованным таблицам. Проблема: при первом проходе первая линкованная таблица ("ACC_BLEND_ARCHIVE") выдает ошибку ODBC-call failed. Если ее пропустить в коде, все остальные таблицы проходят нормально. Если любую линкованную таблицу дернуть руками перед выполнением обмена, тоже все проходит нормально.

Пробую обновить связи перед выполнением обмена данными - не помогает. Пробую дернуть таблицу рекордсетом - тот же эффект. Есть идеи?

For Each tb In CurrentDb.TableDefs
     If Left(tb.Connect, 4) = "ODBC" Then
       tb.Connect = "ODBC;DRIVER=SQL Server Native Client 10.0;SERVER=Server1;;Trusted_Connection=Yes;APP=Microsoft Office 2016;DATABASE=DB1;"
       tb.RefreshLink
    End If
Next tb

For Each tb In CurrentDb.TableDefs
    If Left(tb.Connect, 4) = "ODBC" Then
        tbl_name = Right(tb.Name, Len(tb.Name) - 4)
        Select Case tbl_name
        Case "ACC_CQI"
            db.Execute ("DELETE FROM " & tb.Name & " WHERE(CLV_MOPI_NO in (SELECT CLV_MOPI_NO FROM " & tbl_name & " WHERE(RECORD_VERSION=-1)))")
            db.Execute ("INSERT INTO " & tb.Name & " SELECT * FROM " & tbl_name & " WHERE(RECORD_VERSION=-1)"), dbSeeChanges
            db.Execute ("UPDATE " & tbl_name & " SET RECORD_VERSION=0")
        Case [b]"ACC_BLEND_ARCHIVE"[/b], "ACC_BLEND_ARCHIVE_ORT", "ACC_BLND"
            rs.Open ("SELECT * FROM " & tb.Name & ""), db, adOpenDynamic, adLockOptimistic
            If rs.EOF = False Then rs.MoveLast
            rs.Close
            db.Execute ("INSERT INTO " & tb.Name & " SELECT * FROM " & tbl_name & " WHERE(RECORD_VERSION=-1)"), dbSeeChanges                          <= тут ошибку выдает
            db.Execute ("UPDATE " & tbl_name & " SET RECORD_VERSION=0")
        End Select
    End If
Next tb

http://www.sql.ru/forum/1299472/strannaya-fignya-s-prilinkovannymi-tablicami



Поиск сообщений в rss_sql_ru_access_programming
Страницы: 353 ... 315 314 [313] 312 311 ..
.. 1 Календарь