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

Форум: MS ACCESS

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

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

 
 

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

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

тема: как программно отметить чекбоксы в поле ?
 
 автор: SergeyKV   (15.01.2009 в 12:16)   личное сообщение
 
 

Есть поле (столбец) и в нем многа многа чекбоксов, как поставить флажки во все - программно ?

пс. Тоесть как я понимаю нужно создать цикл (if ... ) и пробежаться по всем чекбоксам и менять Value с False на True, если True то следующий... Вроде бы так как то должно быть

Заранее хотел поблагодарить за помощь, на этом сайте ее всегда можно найти (по Access' у точно! )

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

Вы всё правильнопонимаете,
а что не получается?

  Ответить  
 
 автор: SergeyKV   (15.01.2009 в 12:30)   личное сообщение
 
 

да понимать понимаю а написать не могу ))) прадокс. Не хватает видимо мне бызы (не путать с Access ) элементарных знаний

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

А в Dao сможешь по таблице пробежать и переприсвоить?

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

Private Sub замена()
Dim dbs As DAO.Database 'Объявляем базу данных
'Dim rstOtkuda As DAO.Recordset 'Объявляем рекордсет

Set dbs = CurrentDb 'Открываем базу
'Set rstOtkuda = dbs.OpenRecordset("учет")

With rstOtkuda
'.MoveFirst 'Перемещаемся к первой записи
'.MoveLast 'Перемещаемся к ппоследней записи
'.MoveNext 'Перемещаемся к следующей записи

Do While Not .EOF 'Выполнять пока есть записи

.edit'изменение

![box1] = -1

.Update 'Обновляем рекордсет
Loop
End With
'Закрываем рекордсет и базу данных
rstOtkuda.Close
'Set rstOtkuda = Nothing'Очистка памяти
dbs.Close
Set dbs = Nothing 'Очистка памяти
End Sub

  Ответить  
 
 автор: SergeyKV   (15.01.2009 в 12:51)   личное сообщение
 
 

так ведь и сейчас все в DAO должно писаться или в ADO?
Сейчас попробую (ток на обед схожу , а то на голодный желудок можно такооого написать)
пс. Нашел похожий примерчик на форуме

  Ответить  
 
 автор: SergeyKV   (15.01.2009 в 12:52)   личное сообщение
 
 

ух ты , спасибо час! щас попробую, минуточку.......

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

Ну тады и я пойду поем

  Ответить  
 
 автор: Lukas   (15.01.2009 в 13:24)   личное сообщение
 
 

А одним запросом на обновление не проще будет?

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

проще Lukas ? проще
Вот что значит трезвый взгляд
Но неуправляемо

  Ответить  
 
 автор: Lukas   (15.01.2009 в 13:27)   личное сообщение
 
 

Почему неуправляемо?

  Ответить  
 
 автор: SergeyKV   (15.01.2009 в 16:24)   личное сообщение
 
 

что то на .edit компилятор ругается . . . я посмотрел пример в справке там немного подругому:

With rstEmployees
        EditModeOutput "Before any Edit or AddNew:", .EditMode
        .Edit
        EditModeOutput "After Edit:", .EditMode
        .Update
        EditModeOutput "After Update:", .EditMode
        .AddNew
        EditModeOutput "After AddNew:", .EditMode
        .CancelUpdate
        EditModeOutput "After CancelUpdate:", .EditMode
        .Close
    End With

++++++++++++++++++++++++++

виноват, не тот пример посмотрел

И еще все просто было, оказалось у меня DAO была не подключена

  Ответить  
 
 автор: SergeyKV   (15.01.2009 в 17:05)   личное сообщение
 
 

В итоге вот что получилось , правда выполняется уже минут 20(это нормально ?! ) :
Private Sub Кнопка0_Click()
Dim dbs As DAO.Database 'Объявляем базу данных
Dim rst As DAO.Recordset 'Объявляем рекордсет
'Set dbs1 = OpenDatabase("db1.mdb")
Set dbs = CurrentDb 'Открываем базу
Set rst = dbs.OpenRecordset("Пластик", dbOpenDynaset)

With rst
'.MoveFirst 'Перемещаемся к первой записи
'.MoveLast 'Перемещаемся к ппоследней записи
'.MoveNext 'Перемещаемся к следующей записи

Do While Not .EOF 'Выполнять пока есть записи

.edit 'изменение.

![ДЧИ] = -1

.Update 'Обновляем рекордсет
Loop
End With
'Закрываем рекордсет и базу данных
rst.Close
'Set rstOtkuda = Nothing'Очистка памяти
dbs.Close
Set dbs = Nothing 'Очистка памяти
End Sub

ДЧИ это поле с флажками в таблице Пластик

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

нет это не нормально
надо раскомпилить или добавитьстроки

With rst
.MoveLast 'Перемещаемся к ппоследней записи
.MoveFirst 'Перемещаемся к первой записи





и вот тут немного не так

надо так
'Закрываем рекордсет и базу данных
rst.Close
Set rst = Nothing'Очистка памяти
dbs.Close
Set dbs = Nothing 'Очистка памяти
End Sub

  Ответить  
 
 автор: SergeyKV   (15.01.2009 в 18:04)   личное сообщение
 
 

Уважаемый час! я сделал вот так (благодаря вашей наводке ) :

Private Sub Кнопка1_Click()
Dim dbs As Database
    Dim strSQL As String

    ' Возвращает ссылку на текущую базу данных.
    Set dbs = CurrentDb
    ' Создает строку SQL.
    strSQL = "UPDATE Пластик SET ДЧИ = True"
    ' Выполняет запрос на изменение.
    dbs.Execute strSQL
    ' Возвращает число обновленных записей.
    Debug.Print dbs.RecordsAffected
    Set dbs = Nothing
End Sub

А иначе висит и висит , считает что то .....

  Ответить  
 
 автор: час   (16.01.2009 в 09:33)   личное сообщение
 
 

а висит потому, что перехода к следующей записи не было

'.MoveNext 'Перемещаемся к следующей записи


Private Sub Кнопка0_Click() 
Dim dbs As DAO.Database 'Объявляем базу данных 
Dim rst As DAO.Recordset 'Объявляем рекордсет 
'Set dbs1 = OpenDatabase("db1.mdb") 
Set dbs = CurrentDb 'Открываем базу 
Set rst = dbs.OpenRecordset("Пластик", dbOpenDynaset) 

With rst 
'.MoveFirst 'Перемещаемся к первой записи 
'.MoveLast 'Перемещаемся к ппоследней записи 
'.MoveNext 'Перемещаемся к следующей записи 

Do While Not .EOF 'Выполнять пока есть записи 

.edit 'изменение. 

![ДЧИ] = -1 

.Update                                                'Обновляем рекордсет 
.MoveNext                                           'Перемещаемся к следующей записи 
Loop 
End With 
'Закрываем рекордсет и базу данных 
rst.Close 
'Set rstOtkuda = Nothing'Очистка памяти 
dbs.Close 
Set dbs = Nothing 'Очистка памяти 
End Sub


Ну да ладно чё так много кода когда быстрее запросом

Эт я так - чтоб Вам на заметку

  Ответить  
 
 автор: Lukas   (15.01.2009 в 17:56)   личное сообщение
 
 

Все что Вы понаписали, можно сделать одной строчкой:

Private Sub Кнопка0_Click()
    CurrentDb.Execute "UPDATE [Пластик] SET [ДЧИ] = True;"
End Sub

  Ответить  
 
 автор: SergeyKV   (15.01.2009 в 18:08)   личное сообщение
 
 

ну Lukas , что я могу сказать , развожу руками хлопаю ушами Пока не дорос до Вашего мастерства

  Ответить  
 
 автор: час   (16.01.2009 в 09:30)   личное сообщение
 
 

где Вы Lukas пропадаете?

  Ответить  
 
 автор: SergeyKV   (16.01.2009 в 09:41)   личное сообщение
 
 

На заметку принято

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

2 час . Да, я проверил все дело было в MoveNext :) НО запрос на изменение все равно быстрее работает

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

  Ответить  
 
 автор: Alex   (16.01.2009 в 16:48)   личное сообщение
 
 

Усли в табличной форме, то:
[ЧекбоксИмя]=True
Работает - ставится во всех, сам так делал

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

Совершено верно Alex!!!

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