powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL запрос к recordset - как?!
10 сообщений из 10, страница 1 из 1
SQL запрос к recordset - как?!
    #33546223
ВasiС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю выборку всех записей из листа Excel c помощью ADO.
Т.е. получаю recordset
Вопрос: Как можно удалить из этого recordset колонки, записи по условиям и т.д.? Образно говоря, к этому recordset производить SQL запросы.
Т.е. работать не с таблицей как таковой, а с виртуальной таблицей в recordset

Кто сталкивался, подскажите пожалуйста, как это можно осущевствить?
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33546362
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для удаления обнавления
используй не рекордсет а комманд с запросом
Insert into Table(t1,t2) Values(1,2)
Update Table set t1=2, t2=3 where t1=3
Delete t1 From Table where t1=2
типа того
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33546421
ВasiС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно, у меня немного другое попоробую кодом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Dim con As ADODB.Connection: Set con = New ADODB.Connection
Dim rs As ADODB.Recordset: Set rs = New ADODB.Recordset
Dim i As Integer

'Открываем коннект
con.Open "DRIVER={Microsoft Excel Driver (*.xls)};" & "ReadOnly=1;DBQ=" & filename
'Делаем выборку всех записей из нужного листа
rs.Open "SELECT * FROM [FirstSheet$]", con, adOpenStatic, adLockOptimistic


'В выборке удаляем лишний столбец (КАК ЗДЕСЬ ЭТО МОЖНО СДЕЛАТЬ?)
'rs.Open "ALTER TABLE [FirstSheet$ DROP COLUMN NN", rs, adOpenStatic, adLockOptimistic
'В выборке удаляем лишние записи (КАК ЗДЕСЬ ЭТО МОЖНО СДЕЛАТЬ?)
'rs.Open "DELETE * FROM [FirstSheet$] WHERE Col=25", rs, adOpenStatic, adLockOptimistic


'Вставляем полученный рекордсет в новый лист
For i =  0  To rs.Fields.Count -  1 : Cells( 1 , i +  1 ).Value = rs.Fields(i).Name: Next i
Sheets("TestSheet").Range("A2").CopyFromRecordset rs

rs.Close: Set rs = Nothing
con.Close: Set con = Nothing

Думаю, так понятней будет. Сталкиваюсь с такой задачей впервые. Прошу хелпа =)
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33546572
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй в такой последовательностью



Dim s As New ADODB.Connection
Dim comm As New ADODB.Command
Dim rs As New ADODB.Recordset




comm.ActiveConnection = s
comm.CommandText = "ALTER TABLE [FirstSheet$] DROP COLUMN NN"
comm.Execute
comm.CommandText = "DELETE * FROM [FirstSheet$] WHERE Col=25"
comm.Execute


rs.Open "SELECT * FROM [FirstSheet$]", con, adOpenStatic, adLockOptimistic
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33546590
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT t1,t2,t2,col (Без столбца NN) FROM [FirstSheet$]
where not WHERE Col=25
а это просто по выборке
практически то же самое но виртуально
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33546674
ВasiС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понимаю, ты предлагаешь сначала удалить всё ненужное, а потом уже вывести всё что осталось в recordset.
Дело в том, что это Excel, и у меня при таких действиях выводится, что такие действия не поддерживаются драйвером ISAM (вроде как). Т.е. выборку сделать можно, а вот удалить записи нет =(
Поэтому я хочу пойти по пути обработки recordseta с выборкой, а уже потом его вывести и сохранить. Вот.
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33546691
ВasiС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>SELECT t1,t2,t2,col (Без столбца NN) FROM [FirstSheet$]
>where not WHERE Col=25
>а это просто по выборке
>практически то же самое но виртуально

Критерии выборки всё время меняются, (выбор через чекбоксы). Представляешь, как sql запрос будет выглядеть, если в него включить 15-20 значений чекбоксов =))
Хотя.... может к этому и прийду...
Просто не хочется идти в Москву через северный полюс =))
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33546851
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
where col in (ч1,ч2,ч3 итд...)
прокрути по цыклу чеки
собери в перемнную типа
и выдай критерием In(.....)
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33547021
ВasiС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И всё-таки, возможно ли это сделать Сабжем ?
...
Рейтинг: 0 / 0
SQL запрос к recordset - как?!
    #33547086
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim rs As New ADODB.Recordset
Dim con As New ADODB.Connection
Dim control As control
Dim str As String
For Each control In frmDataEnv.Controls
If control.Tag = "R" Then
If control.Value = Checked Then
str = str & control.Caption & ","
End If
End If
Next
str = Left(str, Len(str) - 1)
Debug.Print str
' caption-ы чека выводит параметры выборки данных
'==========


rs.Open "SELECT t1,t2,t2,col FROM [FirstSheet$]" _
& " where not WHERE Col in (" & str & ")"

PS.
Если параметр текстовой то надо добавить '' для каждого
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL запрос к recordset - как?!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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