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

Форум: MS ACCESS

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

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

 
 

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

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

тема: поле со списком
 
 автор: час   (31.03.2007 в 13:55)   личное сообщение
 
 

Кто знает
как заранее, до выпадения строк, узнать а сколько штук строк в ПолесоСписком?

  Ответить  
 
 автор: osmor   (31.03.2007 в 15:09)   личное сообщение
 
 

всмыле? У поля со списком есть источник строк... можно определить recordcount....

  Ответить  
 
 автор: час   (31.03.2007 в 20:46)   личное сообщение
 
 

Да Олег, у него очень специфический источник строк
SELECT Mid([name],7,40) AS [Таблицы моделей] FROM MSysObjects WHERE (((Mid([name],1,5))="Marki"));
это список таблиц текущ. базы, у которых в названии присутствует слово- "Marki"
марки_телефонов
марки_плееров
и т.д.
заранее неизвестно скока там будет каких марок...
можно конечно как-то узнать сколько таких таблиц в базе, но как это спросить я пока не сообразил...

  Ответить  
 
 автор: osmor   (31.03.2007 в 21:53)   личное сообщение
 
 

Ну либо получить кол-во строк так

me.[ПолеСoСписком].recordset.recordcount

Или вызвать Dcount

Dcount("*","MSysObjects", "Mid([name],1,5)='Marki'")


Должно прокатить

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

Спасибо пробую...

  Ответить  
 
 автор: час   (01.04.2007 в 10:59)   личное сообщение
 
 

Вот так выдаёт количество спасибо.
skoka_tablic = DCount("*", "MSysObjects", "Mid([name],1,5)='Marki'")
теперя не знаю на какое событие поля ето вешать.
может mousemove...
нет фигня
случайно наехал оно сработало...
получается вроде GotFocus- нет фигушки...

  Ответить  
 
 автор: Explorer   (01.04.2007 в 13:48)   личное сообщение
 
 

ИМХО вешать можно просто на открытие или на OnActivate формы

я все-же не очень понимаю, какой смысл в разделении данных по моделям в разные таблицы и тем более зачем работать с системной таблицей если без этого можно прекрасно обойтись - можно просто пересчитывать объекты в коллекции TableDefs проверяя их имя Like "Marki" & "*" и одновременно заполняя айтемами ComboBox.

для того, чтобы в списке отображалось более-менее осмысленное содержание, а не "tblMobilePhones_Marki" например, можно заполнять не только названиями таблиц, а еще и текстом из Descripion таблицы "Марки мобильных телефонов"

при этом первую колонку списка (BoundColumn) с именами таблиц можно скрыть (ширина=0)

  Ответить  
 
 автор: час   (01.04.2007 в 14:06)   личное сообщение
 
 

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

  Ответить  
 
 автор: Explorer   (01.04.2007 в 15:21)   личное сообщение
15 Кб.
 
 

неудачное решение ИМХО с таким последовательным выбором - чего узера гонять по невнятному интерфейсу - то есть список модельных рядов, то нет...

я бы строил дерево - (как в аттачменте, примерно)... причем ветки заполнял бы динамически - по внесенным данным

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

  Ответить  
 
 автор: Explorer   (31.03.2007 в 22:43)   личное сообщение
 
 

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

импортированные данные обрабатываешь? прайслисты?

  Ответить  
 
 автор: час   (01.04.2007 в 10:43)   личное сообщение
 
 

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

  Ответить  
 
 автор: час   (01.04.2007 в 15:00)   личное сообщение
 
 

Спасибо за помощь.
Код выстроился.

Private Sub Tip_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim skoka_tablic As Long
Dim kaka_tablica As String
skoka_tablic = DCount("*", "MSysObjects", "Mid([name],1,5)='Marki'")
If skoka_tablic = 1 Then
kaka_tablica = DFirst("NAME", "MSysObjects", "Mid([name],1,5)='Marki'")
If Nalichie_Tablici_v_Baze(kaka_tablica) = True Then
DoCmd.OpenForm "VIBOR_MAROK"

  Ответить  
 
 автор: Explorer   (02.04.2007 в 09:34)   личное сообщение
 
 

не совсем чтоб хорошо выстроился - неэффективный код и неэффективный алгоритм работы с формой

  Ответить  
 
 автор: час   (02.04.2007 в 10:58)   личное сообщение
 
 

А поконкретнее можно как-то?
Что здеся по Вашему неэффективно?

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