Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / выборка из открытого рекордсета / 12 сообщений из 12, страница 1 из 1
18.09.2005, 16:04:43
    #33275403
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
подскажите пожалуйста возможно ли сделать выборку из АДО рекордсета подобную выборке из таблице
например
select * from RecordSetName where имя_поля=значение
...
Рейтинг: 0 / 0
18.09.2005, 16:06:39
    #33275404
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
да, и если есть какие предложения по реализации вышеизложенного, я думаю если подобным образом нельзя сделать выборку, то наверное как-то придется циклом пробежаться по всем записям... но как это скажется на быстродействии?
...
Рейтинг: 0 / 0
18.09.2005, 16:14:59
    #33275405
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
Код: plaintext
1.
2.
3.
4.
dim db as Connection, rs as Recordset
Set db = New Connection
db.Open "Provider=..."
Set rs = db.Execute("SELECT Name FROM Clients")
rs.Filter = "[Name]='Пупкин'"
...
Рейтинг: 0 / 0
18.09.2005, 16:20:13
    #33275407
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
Если много раз надо повторять эту процедуру, то можно сделать

Код: plaintext
rs.Fields("Name").Properties("Optimize") = True
...
Рейтинг: 0 / 0
18.09.2005, 18:32:15
    #33275473
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
можно по-подробнее...
этот код больше похож на выборку из обычной таблицы, а мне нужно из рекордсета созданного выборкой из табцы
вот таким кодом я выбрал неоходимые мне данные:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Set rs_sort_reg = New ADODB.Recordset
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_sort_reg
    'If .State = adStateOpen Then .Close
    .Open "SELECT * FROM users WHERE REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
  End With

теперь мне из рекордсета rs_sort_reg нужно выбрать все данные где k_tov = 1
т.е. sql запрос был бы
select * from rs_sort_reg where k_tov = 1
...
Рейтинг: 0 / 0
18.09.2005, 18:50:42
    #33275483
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
Либо я чего-то недопонял, либо опять таки не понял в чем проблема
Код: plaintext
1.
2.
3.
4.
With rs_sort_reg
    .Open "SELECT * FROM users WHERE REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
    .Filter = "k_tov = 1"
End With
а лучше
Код: plaintext
1.
2.
With rs_sort_reg
    .Open "SELECT * FROM users WHERE k_tov = 1 AND REG IN (" & s & ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
End With
...
Рейтинг: 0 / 0
18.09.2005, 18:58:19
    #33275490
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
или даже так
Код: plaintext
1.
2.
3.
With rs_sort_reg
    .Open "SELECT users.* FROM users INNER JOIN YourSecondTable Tb On Users.Reg = Tb.K_REG WHERE k_tov = 1 AND Tb.Check = -1", _
    cnn, adOpenStatic, adLockReadOnly, adCmdText
End With
...
Рейтинг: 0 / 0
18.09.2005, 19:13:57
    #33275497
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
возможно я плохо объясняю, но попытаюсь снова.
я писал:

теперь мне из рекордсета rs_sort_reg нужно выбрать все данные где k_tov = 1
т.е. sql запрос был бы
select * from rs_sort_reg where k_tov = 1

мне нужно создать новый рекордсет
заполнить новый рекордсет выбранными данными из рекордсета rs_sort_reg, именно путем выборки из рекордсета rs_sort_reg!
напишу пример немного по другому
Код: plaintext
1.
2.
3.
set rs_select = new adodb.recordest
sql = select * from rs_sort_reg where k_tov =  1 
rs_sort_reg.Open SQL, cnn, adOpenDynamic, adLockOptimistic
что-то наподобие этого...
...
Рейтинг: 0 / 0
18.09.2005, 20:41:56
    #33275567
ВasiС
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
1. А что собственно мешает сделать два рекордсета и обрабатывать каждый отдельно?

2. Или что мешает в коде сделать следущее:
...
Do Until rs.EOF
If Len(s) > 0 Then s = s & ", "
s = s & rs("K_REG")
If rs.Fields("k_tov")=1 Then
'Чего-то делаем
End if
rs.MoveNext
Loop
...

(если я тоже не понял автора - прошу ногами не пинать =))
...
Рейтинг: 0 / 0
18.09.2005, 20:53:54
    #33275578
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
Из рекордсета выборку сделать нельзя. Чем не устраивает фильтр?
...
Рейтинг: 0 / 0
18.09.2005, 21:11:53
    #33275594
Verbovsky Innokenty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
Можно сделать так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set rs_select = new adodb.recordest
With rs_select
    .Fields.Append "Name", adVarChar,  16 
    .Fields.Append "REG", adInteger,  4 
    .Open
    rs_sort_reg.Filter = "k_tov = 1"
    Do Until rs_sort_reg.EOF
        .AddNew
        !Name = rs_sort_reg!Name
        !REG= rs_sort_reg!REG
        rs_sort_reg.MoveNext
    Loop
End With

Лучше, конечно, было бы узнать, зачем такие изыски понадобились?
...
Рейтинг: 0 / 0
18.09.2005, 22:08:24
    #33275621
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из открытого рекордсета
ВasiС
Do Until rs.EOF
If Len(s) > 0 Then s = s & ", "
s = s & rs("K_REG")
If rs.Fields("k_tov")=1 Then
'Чего-то делаем
End if
rs.MoveNext
Loop

(если я тоже не понял автора - прошу ногами не пинать =))

уже поздно, голова плоховато сооброжает... правильно, собрал сначала все в одну кучу, а потом уже делаю запрос на основе того что сделал, кому интересно, вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Set rs_sort_reg = New ADODB.Recordset
Dim s As String
Dim s1 As String
Dim d As String
Dim d2 As String
  
  Dim rs As ADODB.Recordset
  Dim rs1 As ADODB.Recordset
  
  Set rs = rs_reg.Clone
  Set rs1 = rs_prod.Clone
  
  rs.Filter = "check = -1"
  rs1.Filter = "chekbox = -1"
  
  Do Until rs.EOF
        If Len(s) >  0  Then s = s & ", "
            s = s & rs("K_REG")
        rs.MoveNext
  Loop
  
  Do Until rs1.EOF
        If Len(s1) >  0  Then s1 = s1 & ", "
            s1 = s1 & rs1("k_tov")
        rs1.MoveNext
  Loop
  
    If Len(s) & Len(s1) =  0  Then s = "-1" & s1 = "-1"

        d = Format("dd/mm/yyyy")
        d = txtBeg.Text
        d = "#" + Replace(d, ".", "/") + "#"

        d2 = Format("dd/mm/yyyy")
        d2 = txtEnd.Text
        d2 = "#" + Replace(d2, ".", "/") + "#"

    On Error Resume Next
    With rs_sort_reg
    .Open "SELECT * FROM users WHERE REG IN (" & s & ") and k_tov1 in (" & s1 & ") and (date >=" + d + ") and (date <=" + d2 + ")", cnn, adOpenStatic, adLockReadOnly, adCmdText
    End With

Set dg_users.DataSource = rs_sort_reg
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / выборка из открытого рекордсета / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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