|
|
|
| На форме имеется Listbox "Today", источник строк, которого запрос "дневн", со значением логического типа одного из полей. Хочу записать в это логическое поле запроса "дневн" , при выделении конкретной строки в списке, значение True (False - default).
Уникальное поле, по коорому дожна выбираться строка из запроса - [№ заказа], находится в втором столбце списка т.е.
Forms![Сегодня]!lstToday.Column(1)
не пойму как использовать itemSelected либо др. св-во для обращения к значению в определенном столбце, выбранной строки??? | |
|
| |
|
|
|
| Полиграфович
напиши вопрос попонятнее(проще)
Ато ответ получается
Так ведь так и обращаются
=Forms![Сегодня]!lstToday.Column(1)
Или такой ответ на форме расположите Флажок и его щёлкайте -(да/нет)
или вот тема такая же?
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3662&page=1
Или обращайтесь прямо к таблице DFirst ("поле", "Тбл","условие") | |
|
| |
|
14 Кб. |
|
| Пример "понятнее" прикрепил. Вопрос - в тултипе кнопочки.
Простая задача, на самом деле, просто не пойму, как использовать св-во ItemSelected или IsSelected или еще что-то..
Всем выдающимся программерам форума и не только, весьма и весьма признателен.
(Да-а, топик мой не отображает сути вопроса похоже...а переписать нет прав ) | |
|
| |
|
|
|
| Начнём вместе..
Вот что получается:
Private Sub Кнопка2_Click()
'Процедура поиска выделения строк списка
Dim IntCnt As Long
For IntCnt = 0 To Me!LST1.ListCount
If Me!LST1.Selected(IntCnt) = TrueThen
'делаем то, за чем пришли ..............
End If
Next
End Sub | |
|
| |
|
|
|
| или вот оконечное
http://slil.ru/26058002 | |
|
| |
|
|
20 Кб. |
|
| Не могу добиться реакции на выделеную запись. В прикрепленном примере, при нажатии на кнопку удаляются все записи со значением "25", вне зависимости от того, выделена запись или нет (хотя запрос именно так и написан - без условия того, что запись еще должна быть выделена). Как прописать условие, при котором обрабатывалась бы только выделеная запись, даже при совпадении значений в опр. поле ?? | |
|
| |
|
|
|
| Так ведь источник чтрок списка запрос, а там условие выбрать все 25 и чтобы ложь была - они после обновления как раз все с истиной получаются вот их и не видно. | |
|
| |
|
|
|
| Так не срабатывает тоже:
SQLCNN = "UPDATE [Request] SET [Поле3]= true WHERE [Поле1] = '" & Me!LST1.Column(0, counter) & "' " & _
"and Me!LST1.listindex = & counter;"
|
| |
|
| |
|
|
|
| После обновления Все "25" = истина.
и после список.requery в списке ничего не видно - так как запрос -источник списка ничего не выбирает - унего такое условие отбора, что ничего непопадает под критерии. | |
|
| |
|
|
|
| Сергей вы не вникли в вопрос, по-моему.. | |
|
| |
|
|
|
| По видимому не вник....................
Извините ухожу домой... ........ | |
|
| |
|
|
|
| вообще, шагать по выделенным строкам листбокса можно так:
For Each ttt In Me.LST1.ItemsSelected
msgbox Me.LST1.Column(0, ttt)
Next
|
а вот запрос из последнего примера П.Полиграфовича:
(упрощенно) - .Execute "UPDATE Request SET Поле3=-1 WHERE (Поле1 = '25')
обновит ВСЕ(!) записи в таблице где Поле1 = '25', т.к. ему совершенно фиолетово что в листбоксе выделены не все 25 (для западла ему достаточно и одной), поэтому критерии отбора для данного запроса желательно чуть более конкретизировать
*
и не наезжайте на Час :)
Прав он. Критерии отбора записей в запросе Request - WHERE (((TBL1.Поле1)="25") AND ((TBL1.Поле3)=False)). Так вот. После даже однократного срабатывания Вашего запроса в таблице не останется ниодной записи, которые бы удовлетворяли наложенному на запрос условию. Вот записи и "удаляются" из листбокса. такой вот стивен кинг | |
|
| |
|
|
|
| KrukVN: Да, это и объяснять не надо, что запрос так сработает, я его так и написал. Единственно хотел узнать, как через AND прописать второе условие в этом запросе, для обработки записей, только если они выделены. И никаких "наездов", я любой помощи рад.
Вот что-то похожее на это хотелось бы увидеть, только рабочее
SQLCNN = "UPDATE [Request] SET [Поле3]= true WHERE [Поле1] = '" & Me!LST1.Column(0, counter) & "' and Me!LST1.ListIndex = " & counter & ";"
|
| |
|
| |
|
11 Кб. |
|
| посмотрите прицеп.
так Вы хотели? | |
|
| |
|
|
|
| Господа, хочу принести извинения за свою ошибку!
На самом деле в моём запросе уже выбирались записи со значением "25" и "False", после же удаляются из списка те же записи где "25" , а мне нужно было в этом отобраном списке удалить только выделенные. Зачем строить условие "где 25" и "выделено", если и так всё "25", а нужно просто условие для "выделено" просто торможу...
KrukVN: осталась пара вопросов:
1. Это то, что нужно, СПАСИБО, но при выделении 2 и более строк остаются выделеными уже "удаленные" записи, затем при выделении последней появляется ошибка. Как бы её обойти?
2. Какое значение принимает переменная ttt, когда строка выделена?? В примере, как я понял, удаляется только выделеная строка, исключительно из-за того, что поле Column(0, ttt) уникально. | |
|
| |
|
14 Кб. |
|
| ну Вы лентяйкин П.Полиграфович
выделяем ItemsSelected, жмем f1 и... все там есть
dim ttt as variant
*
посмотрите прицеп. там вроде то, что просили | |
|
| |
|
|
|
| Я тот хелп по ItemsSelected уже наизусть могу пересказывать
то, что она Variant понятно, вопрос то - какое значение принимает переменная, при выделении строки, т.е. присваивается ей напр. какой-то индекс строки или что.
В примерчике IsNull -точно. СПАСИБО KrukVN | |
|
| |
|
|
|
| Ещё вопрос: когда роусорс листбокса пишу в VBE такой синтаксис ему не нравится в теле запроса:
[Фамилия] & " " & [Имя] & " " & [Отчество] AS Клиент
|
на кавычки реагирует, а мне надо с пробелами клиента записать??? | |
|
| |
|
|
|
| Попробуйте двойные кавычки ........ "" "" | |
|
| |
|
|
|
| Спасиб, Сергей, работает. Я вот еще, такую встроеную функцию вычитал Space(1) - делает то же самое, может пригодится | |
|
| |
|