powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Формирование SQL запроса в Excel
10 сообщений из 10, страница 1 из 1
Формирование SQL запроса в Excel
    #32607214
Flaer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал такой код:
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MyDataBase;Description=MyDataBase;UID=User1;APP=Microsoft Office 2003;WSID=C6131;DATABASE=MyDataBase;Trusted_Connecti" _
), Array("on=Yes")), Destination:=Range("AU15"))
.CommandText = Array( _
"SELECT TABLE1.ITEMNUMBER, TABLE1.ITEMNAME" & Chr(13) & "" & Chr(10) & "FROM MyDataBase.SUPERVISOR.TABLE1 TABLE1" & Chr(13) & "" & Chr(10) & "WHERE (TABLE1.ITEMNUMBER='111')" _
)
.Name = "Запрос"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

Всё это работает, но если мне нужно подставлять данные в
"WHERE (TABLE1.ITEMNUMBER='111')",
вместо
'111',
то здесь возникает проблема. Как это сделать?? Пробовал делать типа:
A=cells(1, 1).Text или A=cells(1, 1).Value,
а затем
"WHERE (TABLE1.ITEMNUMBER=А)" - получаю синтаксическую ошибку SQL.
Может кто поможет советом ?
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607330
Summerson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"WHERE (TABLE1.ITEMNUMBER=А)" - может быть, стоит подставить кавычки вокруг А?
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607351
Flaer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если переменную взять в кавычки, то это уже не переменная, а текстовое значение.
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607367
Rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Rb
Гость
"WHERE (TABLE1.ITEMNUMBER= '" & А & "')" должно работать
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607480
Flaer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rb"WHERE (TABLE1.ITEMNUMBER= '" & А & "')" должно работать
Спасибо, брат!
Только у меня теперь другая проблема. Данные заносяться в объединённую ячейку и ячейка распадаеться на несколько простых, т.е. нарушаеться форматирование. Как можно этого избежать?
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607512
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему бы после вставки опять Merge не сделать ?
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607524
Flaer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и сделать, но нарушаеться ещё куча форматов и размеров. А это не есть гут
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607672
Rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Rb
Гость
У тебя запрос возвращает несколько полей, а тебе их надо вывести в одно поле.
Если так, то тебе в самом запросе небходимо преобразовать несколько полей в одно
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607690
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сначала тоже мучал Query потом query потом он так меня стал бесить
и я перешел на ADO :
Во кусок кода обращения к dbf базе:
Как вариант проще и гораздо меньше гемороя

' ADO-соединение
Public Sub ADO_SQL1(NewName1 As String, SQL_str As String)

' Директория где находятся dbf файлы
def_dir = ActiveWorkbook.Path

Set ds = Workbooks("zt.xls").Sheets("Итого")
'ds.Range("A2:E5000").ClearContents

' создаем объект соединения
Set cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

' свойства соединения для работы с DBF
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.Properties("Extended Properties") = "dBase IV"
cnn.Properties("Data Source") = def_dir & "\"

'Set cnn = New ADODB.Connection
'cnn.Open "Driver={Microsoft dBASE Driver (*.dbf)};uid=;pwd=;database=" & def_dir & "\" & NewName1 & ";"

' открываем соединение
cnn.Open

'Открываем набор записей
rs.ActiveConnection = cnn

rs.Source = SQL_str
'rs.Source = "Select dt, ad, k, ak, smr from " & NewName1 & " WHERE (DT>='300000' and DT<='329999')ORDER BY dt,ad"
'rs.Source = "Select dt, ad, k, Sum(smr) from " & NewName1 & " GROUP BY dt,ad,k HAVING(DT>='300000' and DT<='329999') ORDER BY dt,ad"
rs.Open

k = 2
While Not IsEmpty(ds.Cells(k, 1).Value)
k = k + 1
Wend

If rs.EOF Then
'MsgBox "Файл не содержит записей !"
Else
' Крутим наборчик
ds.Activate
i = k
rs.MoveFirst
While Not rs.EOF

If rs.Fields("dt") <> "" Then
ds.Cells(i, 1).Value = rs.Fields("dt")
ds.Cells(i, 2).Value = rs.Fields("ad")
ds.Cells(i, 3).Value = rs.Fields("k")

' Флаг служит для для уменьшения параметров запроса - только для основного и вспомог. произ-в.
If flag_group = 1 Then
ds.Cells(i, 4).Value = rs.Fields("ak")
End If

If flag_group = 1 Then
ds.Cells(i, 5).Value = rs.Fields("np")
End If

If flag_group = 1 Then
ds.Cells(i, 7).Value = CDate(rs.Fields("dod"))
End If

If flag_group = 1 Then
ds.Cells(i, 6).Value = rs.Fields(6).Value
Else
'ds.Cells(i, 6).Value = rs.Fields("smr")
ds.Cells(i, 6).Value = rs.Fields(3).Value
End If

End If

Application.StatusBar = "Обрабатывается " & i & " строка dbf файла"
DoEvents
i = i + 1
rs.MoveNext
Wend

End If

' Закрываем набор
rs.Close
Set rs = Nothing

' Закрываем соединение
cnn.Close

End Sub




Scio me nihil scire

<<Jojo®>>
...
Рейтинг: 0 / 0
Формирование SQL запроса в Excel
    #32607737
Flaer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RbУ тебя запрос возвращает несколько полей, а тебе их надо вывести в одно поле.
Если так, то тебе в самом запросе небходимо преобразовать несколько полей в одно
Я преодразовал запрос, и тепрь он мне выдаёт только одно значение.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Формирование SQL запроса в Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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