powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / датагрид с чекбоксами и второй датагрид
10 сообщений из 10, страница 1 из 1
датагрид с чекбоксами и второй датагрид
    #33274764
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос такой:
база access
в первом датагриде (подключенном к рекордсету из справочника rs_reg, таблица region) отображены регионы РФ с 1-го по 83, чекбоксами я выбираю например 2 региона пусть они будут 26 и 41
во втором датагриде отоброжаются покупатели из рекордсета rs_users (таблица users)
в обоих таблицах есть колонка k_reg (код региона)
как мне сделать так чтобы во втором гриде отоброжались тотлько те покупатели, которые проживают в регионе отмеченном галкой в первом датагриде?
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33274800
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33274823
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тот пример уже видел, к сожалению там нет того что я описал... а именно...
как мне сделать так чтобы во втором гриде отоброжались тотлько те покупатели, которые проживают в регионе отмеченном галкой в первом датагриде?
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33274888
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub OpenGrid2()
  dim s as string
  dim rs as ADODB.Recordset
  set rs = rsGrid.Clone
  rs.Filter = "ПолеГалка = 1" '(или True - зависит от БД)
  do until rs.EOF
    if len(s) >  0  then s = s & ", "
    s = s & rs(ПолеID)
    rs.MoveNext
  Loop
  if len(s) >  0  then
    rsGrid2.Open "SELECT * FROM Таблица2 WHERE СсылкаНаПолеID IN (" & s & ")" _
              , Connection1, adOpenStatic, adLockReadOnly, adCmdText
  else
    rsGrid2.Close
  end if
  Set grdi2.Datasource = rsGrid2
End Sub
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33274996
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffПримерно так:
Код: plaintext
1.
2.
    if len(s) >  0  then s = s & ", "
    s = s & rs(ПолеID)

Worobjoff, не могли бы вы объяснить немного что это такое и для чего нужно
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33275246
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это нужно для того, чтобы выполнить запрос такого типа: SELECT ... WHERE ПолеХХ IN (1,4,6)
Где (1, 4, 6) Коды записей, отмеченных галкой.
В вашем случае это поле k_reg
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33275265
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim s As String
  Dim rs As ADODB.Recordset
  Set rs = rs_reg.Clone
  rs.Filter = "check = -1"
  Do
    If Len(s) <  0  Then s = s & "-1"
    s = s & rs("K_REG")
    rs.MoveNext
  Loop Until rs.EOF
  If Len(s) >  0  Then
    rs_users.Open "SELECT * FROM users WHERE K_REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
  Else
    rs_users.Close
  End If
 Set dg_users.DataSource = rs_users

вот мой код, вываливается ошибка на rs_users.Open "SELECT * FROM users WHERE K_REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
ошибка 91 Object variable or With block variable not set
что может быть не так?
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33275268
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shady
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim s As String
  Dim rs As ADODB.Recordset
  Set rs = rs_reg.Clone
  rs.Filter = "check = -1"
  Do
    If Len(s) <  0  Then s = s & ", "
    s = s & rs("K_REG")
    rs.MoveNext
  Loop Until rs.EOF
  If Len(s) >  0  Then
    rs_users.Open "SELECT * FROM users WHERE K_REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
  Else
    rs_users.Close
  End If
 Set dg_users.DataSource = rs_users

вот мой код, вываливается ошибка на rs_users.Open "SELECT * FROM users WHERE K_REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
ошибка 91 Object variable or With block variable not set
что может быть не так?
извиняюсь, не правильно написал, If Len(s) < 0 Then s = s & "-1", исправил на If Len(s) < 0 Then s = s & ", ".
а еще должно наверное быть здесь rs_users.Open "SELECT * FROM users WHERE K_REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
когда мышкой навожу на & s &, s=8099, думаю должно наверное быть 80,99 так или нет?
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33275323
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shadyвот мой код, вываливается ошибка на rs_users.Open "SELECT * FROM users WHERE K_REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
ошибка 91 Object variable or With block variable not set
эта ошибка значит не выполнено set rs_users = New ADODB.Recordset.
Обычно это делают в Form_Initialise

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
'Так правильнее будет
  Dim s As String
  Dim rs As ADODB.Recordset
  Set rs = rs_reg.Clone
  rs.Filter = "check = -1"
  Do Until rs.EOF
    If Len(s) >  0  Then s = s & ", "
    s = s & rs("K_REG")
    rs.MoveNext
  Loop  
  With rs_users
    if .state = Adstateopen then .close
    If Len(s) >  0  Then
      .Open "SELECT * FROM users WHERE K_REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
    End If
  End With
 Set dg_users.DataSource = rs_users
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
'Или так:
  Dim s As String
  Dim rs As ADODB.Recordset
  Set rs = rs_reg.Clone
  rs.Filter = "check = -1"
  Do Until rs.EOF
    If Len(s) >  0  Then s = s & ", "
    s = s & rs("K_REG")
    rs.MoveNext
  Loop  
  if Len(s) =  0  Then s = "-1"
  Set dg_users.DataSource = Nothing
  With rs_users
    if .state = Adstateopen then .close
    .Open "SELECT * FROM users WHERE K_REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
  End With
 Set dg_users.DataSource = rs_users
...
Рейтинг: 0 / 0
датагрид с чекбоксами и второй датагрид
    #33275346
shady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
большое Вам спасибо работает!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / датагрид с чекбоксами и второй датагрид
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]