И так с проблемой провайдера я разобрался Криво стояли драйвера oracle Последний раз когда я их устанавливал я качал их вот отсюда http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html скачивал вот этот файл: 64-bit ODAC 12.2c Release 1 (12.2.0.1.1) for Windows x64 [Released August 3, 2018]
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=OraOLEDB.Oracle;Data Source=192.168.200.253:1521/XE;User ID=***;Password=***"
что касается кодировки при использовании DSN вместо Provider, то мне так и не удалось разобраться. Но на мой взгляд способ подключения через Provider более правильный.
Вот такой код, я получаю нужную мне информацию, но кириллица вопросами. Что я делаю не так?
Код
Sub ImpOracle()
Set cn = CreateObject("ADODB.Connection")
cn.Open "ODBC;DBQ=192.168.200.253:1521/XE;UID=orga;PWD=a546;DSN=ALGO"
'========================================================================================
sSql = "select partner_short_name, trunc(OUTCOME_DATE_SALE) d, sum(roh.sum_w_nds) s,count(1) h from t_partner p, T_REMOTE_ROZNICA_OUTCOME_HEAD roh where ROH.REMOTE_PARTNER_ID = p.PARTNER_ID and trunc(OUTCOME_DATE_SALE) between sysdate - 3 and sysdate group by partner_short_name, trunc(OUTCOME_DATE_SALE)"
Set Rs = GetRs(sSql, cn)
Sheets("Лист1").[a1].CopyFromRecordset Rs
Rs.Close
Set Rs = Nothing
End Sub
Function GetRs(sstr, cn)
Set rstdata = CreateObject("ADODB.Recordset")
rstdata.Open sstr, cn
Set GetRs = rstdata
Set rstdata = Nothing
End Function
Здравствуйте, раньше не имел дела с подключением к БД. Прошу помочь. На просторах нашего форума нашел вот такую строку подключения
Код
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=MSDAORA.1;Data Source=***;Password=***;User ID=***"
но как настроить под свой лад не пойму. На счет Data Source=***;Password=***;User ID=*** все понятно А вот Provider какой нужно использовать? Я установил драйвер с сайта oracl "Oracle in instantclient_18_3" имя его "SQORA32.DLL".
Sub штуки()
Cells.Replace What:=" шт", Replacement:="шт"
Cells.Replace What:="ШТ", Replacement:="шт"
Dim arr() As Integer
lr = Cells(Rows.Count, 1).End(xlUp).Row
For c = 1 To lr
ReDim arr(1 To 1)
Z = 3
S = 1
шт = 1
i = 1
Do While шт < Len(Cells(c, 1)) - 3
ReDim Preserve arr(1 To i)
шт = InStr(шт + 1, Cells(c, 1), "шт")
If шт = 0 Then Exit Do
On Error Resume Next ' обработчик Run-time ошибок
ошиб:
X = Replace(Mid(Cells(c, 1), шт - Z, Z), "-", "")
X = Mid(X, InStr(1, X, " ") + 1, 3)
arr(i) = X
If Err.Number = 13 Then
Z = Z - S
S = S + S
On Error GoTo 0
GoTo ошиб
End If
Z = 3
S = 1
i = i + 1
Loop
Cells(c, 2) = WorksheetFunction.Sum(arr())
Next c
End Sub
Ваша задачка меня очень заинтересовала. Я быстро нашел решение, но есть одна загвоздка. Каждый раз написание текста меняется то количества пишут через "-" то без него.
Это возможно, но файл должен быть все время запущен. Или его нужно запускать каждый день. при запуске он будет проверять даты и если нужно отправлять письмо. Но я думаю если вы не имели дел с макросами, то вам в ветку работа.
Sub find()
tim = Timer
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set a = ActiveWorkbook.Worksheets("1")
Set b = ActiveWorkbook.Worksheets("2")
LRa = a.Cells(Rows.Count, 1).End(xlUp).Row
LRb = b.Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To LRb
Set poz1 = a.Columns(1).find(What:=b.Cells(j, 1), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If poz1 Is Nothing Then GoTo neeext
Set poz2 = a.Range(a.Cells(poz1.Row, 3), a.Cells(LRa, 3)).find(What:=b.Cells(j, 2), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
b.Cells(j, 3).Value = a.Cells(poz2.Row, 4)
neeext:
Next j
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox Timer - tim
End Sub
Sub Макрос()
Set TW = ActiveWorkbook
Sheets("Результат").Unprotect Password:=123
Cells.Copy
Workbooks.Add
With Cells(1, 1)
.PasteSpecial Paste:=xlPasteValues
.PasteSpecial Paste:=xlPasteFormats
End With
TW.Sheets("Результат").Protect Password:=123
End Sub