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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Передача значения из LIstBox-а в запрос
 
 автор: П.Полиграфович   (13.08.2008 в 14:25)   личное сообщение
 
 

На форме имеется Listbox "Today", источник строк, которого запрос "дневн", со значением логического типа одного из полей. Хочу записать в это логическое поле запроса "дневн" , при выделении конкретной строки в списке, значение True (False - default).
Уникальное поле, по коорому дожна выбираться строка из запроса - [№ заказа], находится в втором столбце списка т.е.
Forms![Сегодня]!lstToday.Column(1)
не пойму как использовать itemSelected либо др. св-во для обращения к значению в определенном столбце, выбранной строки???

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

Полиграфович
напиши вопрос попонятнее(проще)
Ато ответ получается
Так ведь так и обращаются
=Forms![Сегодня]!lstToday.Column(1)
Или такой ответ на форме расположите Флажок и его щёлкайте -(да/нет)
или вот тема такая же?
http://hiprog.com/forum/read.php?id_forum=1&id_theme=3662&page=1
Или обращайтесь прямо к таблице DFirst ("поле", "Тбл","условие")

  Ответить  
 
 автор: П.Полиграфович   (13.08.2008 в 21:43)   личное сообщение
14 Кб.
 
 

Пример "понятнее" прикрепил. Вопрос - в тултипе кнопочки.
Простая задача, на самом деле, просто не пойму, как использовать св-во ItemSelected или IsSelected или еще что-то..
Всем выдающимся программерам форума и не только, весьма и весьма признателен.
(Да-а, топик мой не отображает сути вопроса похоже...а переписать нет прав )

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

Начнём вместе..
Вот что получается:

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

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

или вот оконечное

http://slil.ru/26058002

  Ответить  
 
 автор: П.Полиграфович   (15.08.2008 в 15:15)   личное сообщение
 
 

  Ответить  
 
 автор: П.Полиграфович   (15.08.2008 в 15:15)   личное сообщение
20 Кб.
 
 

Не могу добиться реакции на выделеную запись. В прикрепленном примере, при нажатии на кнопку удаляются все записи со значением "25", вне зависимости от того, выделена запись или нет (хотя запрос именно так и написан - без условия того, что запись еще должна быть выделена). Как прописать условие, при котором обрабатывалась бы только выделеная запись, даже при совпадении значений в опр. поле ??

  Ответить  
 
 автор: час   (15.08.2008 в 16:36)   личное сообщение
 
 

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

  Ответить  
 
 автор: П.Полиграфович   (15.08.2008 в 16:57)   личное сообщение
 
 

Так не срабатывает тоже:

SQLCNN = "UPDATE [Request] SET [Поле3]= true WHERE [Поле1] = '" & Me!LST1.Column(0, counter) & "' " & _
"and Me!LST1.listindex = & counter;"

  Ответить  
 
 автор: час   (15.08.2008 в 17:04)   личное сообщение
 
 

После обновления Все "25" = истина.
и после список.requery в списке ничего не видно - так как запрос -источник списка ничего не выбирает - унего такое условие отбора, что ничего непопадает под критерии.

  Ответить  
 
 автор: П.Полиграфович   (15.08.2008 в 17:02)   личное сообщение
 
 

Сергей вы не вникли в вопрос, по-моему..

  Ответить  
 
 автор: час   (15.08.2008 в 17:07)   личное сообщение
 
 

По видимому не вник....................
Извините ухожу домой... ........

  Ответить  
 
 автор: KrukVN   (16.08.2008 в 18:41)   личное сообщение
 
 

вообще, шагать по выделенным строкам листбокса можно так:

        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)). Так вот. После даже однократного срабатывания Вашего запроса в таблице не останется ниодной записи, которые бы удовлетворяли наложенному на запрос условию. Вот записи и "удаляются" из листбокса. такой вот стивен кинг

  Ответить  
 
 автор: П.Полиграфович   (17.08.2008 в 05:56)   личное сообщение
 
 

KrukVN: Да, это и объяснять не надо, что запрос так сработает, я его так и написал. Единственно хотел узнать, как через AND прописать второе условие в этом запросе, для обработки записей, только если они выделены. И никаких "наездов", я любой помощи рад.
Вот что-то похожее на это хотелось бы увидеть, только рабочее

SQLCNN = "UPDATE [Request] SET [Поле3]= true WHERE [Поле1] = '" & Me!LST1.Column(0, counter) & "' and Me!LST1.ListIndex = " & counter & ";"

  Ответить  
 
 автор: KrukVN   (17.08.2008 в 11:56)   личное сообщение
11 Кб.
 
 

посмотрите прицеп.
так Вы хотели?

  Ответить  
 
 автор: П.Полиграфович   (17.08.2008 в 13:23)   личное сообщение
 
 

Господа, хочу принести извинения за свою ошибку!
На самом деле в моём запросе уже выбирались записи со значением "25" и "False", после же удаляются из списка те же записи где "25" , а мне нужно было в этом отобраном списке удалить только выделенные. Зачем строить условие "где 25" и "выделено", если и так всё "25", а нужно просто условие для "выделено" просто торможу...

KrukVN: осталась пара вопросов:
1. Это то, что нужно, СПАСИБО, но при выделении 2 и более строк остаются выделеными уже "удаленные" записи, затем при выделении последней появляется ошибка. Как бы её обойти?
2. Какое значение принимает переменная ttt, когда строка выделена?? В примере, как я понял, удаляется только выделеная строка, исключительно из-за того, что поле Column(0, ttt) уникально.

  Ответить  
 
 автор: KrukVN   (17.08.2008 в 15:51)   личное сообщение
14 Кб.
 
 

ну Вы лентяйкин П.Полиграфович
выделяем ItemsSelected, жмем f1 и... все там есть
dim ttt as variant
*
посмотрите прицеп. там вроде то, что просили

  Ответить  
 
 автор: П.Полиграфович   (17.08.2008 в 16:47)   личное сообщение
 
 

Я тот хелп по ItemsSelected уже наизусть могу пересказывать
то, что она Variant понятно, вопрос то - какое значение принимает переменная, при выделении строки, т.е. присваивается ей напр. какой-то индекс строки или что.
В примерчике IsNull -точно. СПАСИБО KrukVN

  Ответить  
 
 автор: П.Полиграфович   (17.08.2008 в 17:46)   личное сообщение
 
 

Ещё вопрос: когда роусорс листбокса пишу в VBE такой синтаксис ему не нравится в теле запроса:

 [Фамилия] & " " & [Имя] & " " & [Отчество] AS Клиент

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

  Ответить  
 
 автор: час   (17.08.2008 в 22:55)   личное сообщение
 
 

Попробуйте двойные кавычки ........ "" ""

  Ответить  
 
 автор: П.Полиграфович   (18.08.2008 в 13:15)   личное сообщение
 
 

Спасиб, Сергей, работает. Я вот еще, такую встроеную функцию вычитал Space(1) - делает то же самое, может пригодится

  Ответить  
 
 автор: час   (18.08.2008 в 13:57)   личное сообщение
 
 

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