Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: выподающий список
 
 автор: Мишок   (06.12.2011 в 12:48)   личное сообщение
 
 

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

  Ответить  
 
 автор: Дядя Федор   (06.12.2011 в 12:56)   личное сообщение
 
 

Исключить из источника списка и обновить список.

  Ответить  
 
 автор: Дядя Федор   (06.12.2011 в 12:58)   личное сообщение
 
 

Исключить из источника списка и обновить список.
Или добавить поле . "занято". А в источнике списка фильтр занято=ложь.
Список обновлять при каждом выборе.

Сорри за повтор.

  Ответить  
 
 автор: Мишок   (06.12.2011 в 13:20)   личное сообщение
 
 

в том и вопрос как исключить из списка?

  Ответить  
 
 автор: Дядя Федор   (06.12.2011 в 14:06)   личное сообщение
 
 

Что является источником списка? Таблица или запрос.
Наилучшее решение все-таки добавить поле "Занято" и после выбора обновить источник данных для списка.
Например, запрос -источник
SELECT ID,NOMERMESTA,ZANATO FROM TABLICA WHERE ZANATO=FALSE;
Изначально все ZANATO - false.
После обновления запрос
"UPDATE TABLICA SET ZANATO=TRUE WHERE ID=" & СПИСОК.Column(0) & ";"
Список.requery. И все вроде.

Правда, здесь не учтена возможная смена мест парковки.
Например, если захотите изменить уже занятое место.
Тут логику надо посложнее.
Типа если место занятое ранее меняется на другое
Сначала - освободить первое, потом занять новое.
Выложите базу примерчик с таблицей. Будет проще

Ибо удалять из таблицы использованное место нельзя.
А запрос, учитывающий все занятые (без поля занято), будет сложным.

  Ответить  
 
 автор: snipe   (06.12.2011 в 14:31)   личное сообщение
 
 

сдается мне что поле со списком сделано на уровне таблицы

  Ответить  
 
 автор: Дядя Федор   (06.12.2011 в 14:39)   личное сообщение
10 Кб.
 
 

Ну и что.
Можно подправить.
Вот я прикинул ( табличная форма)

Option Compare Database
Option Explicit
Dim TEKID%
Private Sub Form_Current()
TEKID = Me.NOMER 'это ваш список
End Sub

Private Sub nomer_AfterUpdate()
If TEKID <> Me.NOMER Then
CurrentDb.Execute ("UPDATE Tablmestaparkodri SET ZANATO=FALSE WHERE ID=" & TEKID & ";")
CurrentDb.Execute ("UPDATE Tablmestaparkodri SET ZANATO=TRUE WHERE ID=" & Me.NOMER.Column(0) & ";")
Me.NOMER.Requery
End If
End Sub
'Таблица Tablmestaparkodri
'ID - идентификатор места
'NOMER - номер места
'ZANATO - да/нет
'Таблица авто-место
'Ida - идентификатор авто
'NOMER - номер места 'это список с источником

'на форме
'Ida - идентификатор авто
'NOMER - 'это список с источником
'SELECT Tablmestaparkodri.ID, Tablmestaparkodri.NOMER, Tablmestaparkodri.zanato FROM Tablmestaparkodri WHERE (((Tablmestaparkodri.zanato)=False));
'остальные поля по усмотрению
'к Ida можно привязать марку, владельца и т.п.
-> скрин

для корректности присоед.столбец - 2 - номер.

  Ответить  
 
 автор: Мишок   (06.12.2011 в 16:04)   личное сообщение
 
 

да парковки сделаны таблицей. делать поле занято не хорошо. В таблице есть значение 0 т.е. машине место не присвоенно.

  Ответить  
 
 автор: Дядя Федор   (06.12.2011 в 16:08)   личное сообщение
 
 

А причем здесь машины? Таблицы-то разные. НЕТ?
Есть таблица машины - у нее или есть парковка или нет
Есть таблица парковки - они или заняты или свободны.
Что-то со структурой у вас не-то.

  Ответить  
 
 автор: Мишок   (06.12.2011 в 16:22)   личное сообщение
50 Кб.
 
 

на форме это выглядит так ( сделано просто и примитивно, спасибо, что думали иначе :))

  Ответить  
 
 автор: Дядя Федор   (06.12.2011 в 16:33)   личное сообщение
 
 

И все-таки. Что является источником для парковок?
Я думал ОТДЕЛЬНАЯ таблица, а у вас , похоже, нумерованный список от 1 до N.
Тогда как вы решаете вопрос смены парковок?
Или это невозможно в жизни?

  Ответить  
 
 автор: Мишок   (06.12.2011 в 16:45)   личное сообщение
 
 

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

  Ответить  
 
 автор: Дядя Федор   (06.12.2011 в 16:55)   личное сообщение
 
 

Тогда не понятно, чем не устраивает мой подход. Почему нельзя добавить поле "занято".
Может поразмыслите?
Извините, вынужден закончить. Я с работы. Пора домой.

  Ответить  
 
 автор: Мишок   (06.12.2011 в 17:00)   личное сообщение
 
 

спасибо

  Ответить  
 
 автор: Дядя Федор   (07.12.2011 в 09:56)   личное сообщение
 
 

Тогда так
SELECT Tablmestaparkodri.ID, Tablmestaparkodri.NOMER FROM Tablmestaparkodri WHERE (((Tablmestaparkodri.NOMER) Not In (select nomer from Таблицаpark where Таблицаpark.nomer=Tablmestaparkodri.nomer)));

надо подкорректировать по ваши таблицы

  Ответить  
 
 автор: Мишок   (07.12.2011 в 10:48)   личное сообщение
 
 

Спасибо, Дядя Федор, все получилось простым запросом. Не понимаю почему вчера не получалось, загадка. Еще раз - спасибо большое.

  Ответить  
 
 автор: Дядя Федор   (07.12.2011 в 12:40)   личное сообщение
 
 

Ok

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList