2015-07-08 3 views
-2

У меня есть документ excel, который я хочу связать с SQL-запросом. В документе excel у меня есть список номеров позиций. Всякий раз, когда номер элемента изменяется, я хочу, чтобы запрос sql запрашивал список номеров элементов и возвращал результат. В принципе, я хочу, чтобы лист excel использовал номер позиции в качестве параметра для номеров элементов базы данных? Номера элементов excel обновляются ежедневно.SQL Query обновляется при обновлении пользователем Excel

+1

Вы не можете этого сделать без добавления отдельной таблицы запросов для каждого номера элемента в своей таблице. Однако вы можете добавить таблицу запросов, которая ищет информацию, необходимую для ВСЕХ номеров элементов, а затем выполнить поиск, чтобы объединить номера позиций в вашем листе excel с информацией из таблицы запросов. – PermaNoob

+0

как вы это делаете? – CollegeHelp

+0

У меня слишком много данных для выполнения таблицы запросов Мне нужно сделать номера позиций параметром запроса – CollegeHelp

ответ

0

Имейте в виду, что это пример для того, что вы пытаетесь сделать. Не зная о своей базе данных или электронной таблице, я не могу гарантировать, что все это будет работать. По крайней мере, вам потребуется внести некоторые корректировки, прежде чем вы сможете их использовать.

Имея это в виду, я прокомментировал различные части кода, чтобы вы знали, что там происходит. Секции, которые имеют ***, являются областями, которые вы можете изменить. Секции с ### являются областями, в которых вы будете ИМЕЕТ, чтобы изменить его работу.

Этот код предполагает, что у вас есть список номеров элементов в столбце A листа 1, что каждый номер элемента возвращает только одну запись и что в вашем списке номеров элементов нет пустых ячеек.

Sub GrabItemInfo() 
Dim objADO As New ADODB.Connection 
Dim objRecSet As New ADODB.Recordset 
Dim objCmd As New ADODB.Command 
Dim strConn As String 
Dim strSQL As String 
Dim RowNum As Long 
Dim errNum As Long 

'open a connection to the database 
'### change the properties for the connection to suit your needs 
strConn = "DSN=DSNName; DBQ=Database; UID=Username; PWD=Password" 
objADO.Open strConn 
objCmd.ActiveConnection = objADO 
objCmd.CommandType = adCmdText 

'errNum is the row that the error log will start on 
'***change errNum to change which row it starts on 
errNum = 1 
'***changeRowNum here to change which row to start on 
RowNum = 1 
'start the loop 
Do Until ThisWorkbook.Sheets(1).Cells(RowNum, 1) = "" 
    On Error Resume Next 
    '### change the sql to whatever you need 
    '*** change the cells section if you're not using the first column 
    strSQL = "SELECT [field] FROM [table] WHERE ItemNum = " & ThisWorkbook.Sheets(1).Cells(RowNum, 1).Value 
    objCmd.CommandText = strSQL 
    Set objRecSet = objCmd.Execute 
    'pastes results from query into the cell next to the item number 
    '***change the cells section if you want to use a different column 
    ThisWorkbook.Sheets(1).Cells(RowNum, 2).CopyFromRecordset objRecSet 
    'clear out the recordset before the loops starts again 
    Set objRecSet = Nothing 
    'put the item number, error number, and error description on the second sheet of the work book 
    '***change the sheet number to put it on another sheet if you're already using the second 
    If Err > 0 Then 
     ThisWorkbook.Sheets(2).Cells(errNum, 1).Value = ThisWorkbook.Sheets(1).Cells(RowNum, 1).Value 
     ThisWorkbook.Sheets(2).Cells(errNum, 2).Value = Err.Number 
     ThisWorkbook.Sheets(2).Cells(errNum, 3).Value = Err.Description 
     On Error GoTo 0 
    End If 
    'raise the value for the row for the next iteration 
    RowNum = RowNum + 1 
Loop 

'clear out the connection 
Set objADO = Nothing 
Set objRecSet = Nothing 
Set objCmd = Nothing 

End Sub 

Для получения дополнительной информации о строках подключения, я рекомендую http://www.connectionstrings.com Это большой ресурс, чтобы использовать для выяснения, какого типа соединения строки вам нужно. Связи строк могут быть ... сложными ... иногда, и это действительно помогает.

Если вам нужны какие-либо ресурсы для SQL, я бы порекомендовал http://www.w3schools.com/sql У них есть хорошее представление об этом там. Прошлое, получите хороший справочник, найдите наставника, присоединитесь к форумам (или Q & Сайты, подобные этому) и т. Д. Если вы посмотрите на тег SQL на этом сайте, появится дополнительная информация, а также некоторые рекомендуемые ресурсы как Что ж.

Удачи.