0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 284 Просмотров
*

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
А есть спецы по MS Access?
« : 18.01.2017, 14:30:20 »
Может кому доводилось работать с Access, подскажите, не пойму поведение программы. Имеется база данных. В ней таблица "Путевые листы". Имеется форма, через которую в эту таблицу заносятся данные, все работает. Есть еще несколько связанных таблиц, "Водители", "Автомобили" и другие. Теперь проблема.

Понадобилось мне для ведения журнала делать выборку из таблицы "Путевые листы" по дате, т.е. должно показать, какие водители в определенный день получили путевые листы и что там было написано. Сделал форму, в которой установил поле с датой. Сделал подчиненную форму, которая мне показывала все записи за дату, указанную в поле основной формы. Все работало. Но в один прекрасный момент форма стала косячить. Указываю в поле дату: 22.12.2016, мне выводятся все записи за 22 декабря, а вместе с ними - одна запись с ключом 27 от 01.11.2016, у которой дата меняется на 22.12.2016. Делаю выборку по дате от 23.12.2016, выводятся нужные записи, а вместе с ними появляется запись с ключом 27 от 23.12.2016, то есть ей присваивается запись, указанная в поле. Что примечательно, выборка более ранних дат такого косяка не дает.

Делаю в свойствах формы запрет на изменение данных. Пропала возможность указать дату.
Что за фигня такая?
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

robert

  • Профи
  • 4078
  • 376
Re: А есть спецы по MS Access?
« Ответ #1 : 18.01.2017, 18:33:01 »
Много забыл: уже 5-6 лет не трогал, но до этого сделал что-то похожее (до сих пор используется моими девушками из отдела кадров :)). Там тоже делаю выборку по датам, но такого косяка не наблюдал. Посмотрите код (Visual Basic и SQL).
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
Re: А есть спецы по MS Access?
« Ответ #2 : 18.01.2017, 22:13:41 »
Много забыл: уже 5-6 лет не трогал, но до этого сделал что-то похожее (до сих пор используется моими девушками из отдела кадров :)). Там тоже делаю выборку по датам, но такого косяка не наблюдал. Посмотрите код (Visual Basic и SQL).
Спасибо за отклик, похоже кроме нас тут больше никто не балуется с базами данных. Меня тоже необходимость прижала - никаких средств для работы нет, приходится заполнять кучу ненужных таблиц лишь с целью показать начальству. Решил частично автоматизировать процесс и перенести все в Access - единственно, что у нас разрешено пока использовать.

VBA юзал, но я в другой форме, через которую добавляю в таблицу новые путевые листы, прописал параметр по умолчанию. То есть при заполнении полей формы повторяющиеся данные не приходится лишний раз набивать вручную. Эта форма работает с той же таблицей "Путевые листы". Но как может VBA этой формы иметь какую то связь с другой формой, в которой производится выборка по дате - ума не приложу. Я быстрее все это на PHP напишу, чем в Access...
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

robert

  • Профи
  • 4078
  • 376
Re: А есть спецы по MS Access?
« Ответ #3 : 18.01.2017, 22:36:56 »
Я уже не помню, весь VBA-код мой или нет. Все-таки посмотрите, в любом случае SQL должен быть. Вы, наверное, знаете комбинацию Ctrl+Enter?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
Re: А есть спецы по MS Access?
« Ответ #4 : 18.01.2017, 22:41:47 »
Я уже не помню, весь VBA-код мой или нет. Все-таки посмотрите, в любом случае SQL должен быть. Вы, наверное, знаете комбинацию Ctrl+Enter?
Можно на ты... Да, знаю. Завтра еще раз пробегусь по всем параметрам. SQL да, есть, но он создан мастером формы и записан в параметрах формы на вкладке "Данные". Отдельно запроса для этой формы я не создавал.
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

AlekVolsk

  • Профи
  • 6312
  • 336
Re: А есть спецы по MS Access?
« Ответ #5 : 18.01.2017, 22:45:24 »
сори за флуд, чуток за обидку взяло =)

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

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
Re: А есть спецы по MS Access?
« Ответ #6 : 18.01.2017, 23:15:16 »
сори за флуд, чуток за обидку взяло =)
Извиняюсь, не так выразился. Я имел ввиду приложение Access, его базы данных. Думал, подтекст названия темы это подразумевает...
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
Re: А есть спецы по MS Access?
« Ответ #7 : 19.01.2017, 17:25:48 »
На форме ввода данных в таблицу стоит такой код:
Код: xml
Option Compare Database
Private Sub Автомобиль_AfterUpdate()
    Me.Автомобиль.DefaultValue = Me.Автомобиль
End Sub

Private Sub Водитель_AfterUpdate()
   Me.Водитель.DefaultValue = Me.Водитель
End Sub

Больше никакого VB нет. А вот запрос формы, которая делает выборку и показывает в подчиненной таблице данные:
Код: sql
SELECT [Путевые листы].[Дата выдачи] FROM [Путевые листы];

P.S. Сделал копию формы для добавления, в ней такая же проблема. А сделал потому, что текущая форма стала выдавать сообщение, показанное на скрине. При этом база у меня на компе, пробовал монопольный доступ - не то. Убрал везде запрет на изменение данных - не помогло. Неужели проблема в Access? У меня 2010-й...
« Последнее редактирование: 19.01.2017, 17:31:55 от SeBun »
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
Re: А есть спецы по MS Access?
« Ответ #8 : 02.02.2017, 14:09:19 »
Понимаю, что это форум не VBA-программистов, но вдруг кто имел с ним дело...

Никак не соображу, в чем проблема. Есть таблица Водители, где первичный ключ - табельный номер сотрудника. Есть таблица "Путевые листы", где есть поле "Водитель", связанное с таблицей "Водители", и есть форма. Задача - при вводе данных в форму проверить, есть ли в таблице "Путевые листы" запись, где дата выдачи и водитель совпадают с введенными в форму данными. Написал такой код:

Код: ini
'Проверка на наличие записи перед сохранением
Private Sub Водитель_BeforeUpdate(Cancel As Integer)
    Dim SQLstr As String
    
    SQLstr = "SELECT Count(*) FROM Путевые листы WHERE Путевые листы.Водитель = " & Me.Водитель _
    & " AND Путевые листы.Дата выдачи = " & Me.Дата выдачи
    
    If CurrentProject.Connection.Execute(SQLstr).Fields(0) > 0 Then
        MsgBox "Путевой лист на эту дату уже занесен в базу данных."
        Cancel = True
    End If
    
End Sub

Выдает ошибку:
« Последнее редактирование: 02.02.2017, 14:26:14 от SeBun »
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

robert

  • Профи
  • 4078
  • 376
Re: А есть спецы по MS Access?
« Ответ #9 : 02.02.2017, 14:30:53 »
Возможно, нужно добавить кавычки и скобки, у меня стоит MS Access 2003.
Код
SQLstr = "SELECT Count(*) FROM [Путевые листы] WHERE [Путевые листы].[Водитель] = '" & Me.Водитель _
    & "' AND [Путевые листы].[Дата выдачи] = '" & Me.Дата выдачи & "'"
Точно не знаю, давно не трогал.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
Re: А есть спецы по MS Access?
« Ответ #10 : 02.02.2017, 14:56:59 »
Ошибка синтаксиса   :(
Подпрпавил, теперь "несоответствие типа данных условиям отбора"  :(
Лучше бы С++ внедрили, я его хоть понимаю....
« Последнее редактирование: 02.02.2017, 15:02:50 от SeBun »
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

dmitry_stas

  • Профи
  • 10039
  • 953
Re: А есть спецы по MS Access?
« Ответ #11 : 02.02.2017, 15:07:04 »
все что с пробелами (Путевые листы, Дата выдачи) имхо однозначно должно быть обрамлено во что то. 99.99% что парсер не понимает просто так пробельные имена. не знаю ни одного языка который так умеет.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

robert

  • Профи
  • 4078
  • 376
Re: А есть спецы по MS Access?
« Ответ #12 : 02.02.2017, 15:13:26 »
все что с пробелами (Путевые листы, Дата выдачи) имхо однозначно должно быть обрамлено во что то. 99.99% что парсер не понимает просто так пробельные имена. не знаю ни одного языка который так умеет.
Насколько знаю, MS VBA может: для этого и нужны квадратные скобки.
Ошибка синтаксиса   :(
Подпрпавил, теперь "несоответствие типа данных условиям отбора"  :(
Лучше бы С++ внедрили, я его хоть понимаю....
Тут вроде понятно: вы пытались сравнивать разные типы данных, только надо знать в каком месте.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

SeBun

  • Практически профи
  • 3154
  • 193
  • @SeBun48
Re: А есть спецы по MS Access?
« Ответ #13 : 02.02.2017, 15:25:57 »
...99.99% что парсер не понимает просто так пробельные имена. не знаю ни одного языка который так умеет.
Да нет, он умеет. Проблемы, как я понял, возникают в момент работы с сервером, а локально должно работать.

Насколько знаю, MS VBA может: для этого и нужны квадратные скобки.Тут вроде понятно: вы пытались сравнивать разные типы данных, только надо знать в каком месте.
А вот это интересно. Поля формы связаны с таблицами. С датой, наверное, проблем нет. А вот в форме в поле "Водитель" выводится фамилия и инициалы, хотя связано по табельному номеру. Источник: SELECT Водители.[Табельный номер], Водители.ФИО FROM Водители;
SELECT Водители.[Табельный номер], Водители.ФИО FROM Водители;
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

dmitry_stas

  • Профи
  • 10039
  • 953
Re: А есть спецы по MS Access?
« Ответ #14 : 02.02.2017, 22:39:02 »
Насколько знаю, MS VBA может: для этого и нужны квадратные скобки.
ну так я ж и говорю - должно быть обрамлено во что то :) значит в квадратные скобки.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Есть спецы по линуксу?

Автор zomby6888

Ответов: 38
Просмотров: 1177
Последний ответ 07.07.2016, 15:53:13
от zomby6888
Какие облака есть продвинутые?

Автор voland

Ответов: 3
Просмотров: 342
Последний ответ 24.11.2015, 18:35:26
от flyingspook
У кого нить есть связь с pavel_28121

Автор voland

Ответов: 2
Просмотров: 325
Последний ответ 12.11.2015, 22:29:21
от voland
Есть домен joomlaclub.ru Что посоветуете?

Автор mckey_pnz

Ответов: 12
Просмотров: 594
Последний ответ 05.11.2015, 04:51:42
от Alldar
А где есть грамотные копирайтеры?

Автор voland

Ответов: 5
Просмотров: 416
Последний ответ 16.10.2015, 09:12:32
от SeBun