powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Импорт из Excel в бд SQL Server через ado в пустую таблицу
7 сообщений из 7, страница 1 из 1
Импорт из Excel в бд SQL Server через ado в пустую таблицу
    #33821309
guest11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли это сделать через ADO и проч.?
Есть БД на сервере, есть файл xls, из которого в таблицу нужно данные вытянуть .
Процедура с использованием ADO переносит данные, если в таблице БД есть хотя бы 1 запись.
А вот если таблица пустая- ничего не выходит набор пустой.
Пока выход вышел такой
Записали данные в файл sql,
а затем выполнили запрос к серверу.
...
Рейтинг: 0 / 0
Импорт из Excel в бд SQL Server через ado в пустую таблицу
    #33821664
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет ничегь невозможного

код покажите.
...
Рейтинг: 0 / 0
Импорт из Excel в бд SQL Server через ado в пустую таблицу
    #33821705
guest11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные в бд переносятся, если в таблице есть хотя бы 1 запись
Sub Excel_P()
Dim Z As String
Dim s As Integer
Dim a As Integer
Dim Q As Integer
Dim j As Integer
Dim sFile As String
Dim Exc As Object
Dim db As Connection
Dim WithEvents adoRs As Recordset
Dim xlWb As Object

Dim MOSet(1 To 453) As String
Dim MOAddr(1 To 453) As String
Dim MOParent(1 To 453) As Integer
Dim mookato(1 To 453) As String
Set Exc = CreateObject("Excel.Application")
If Exc Is Nothing Then Exit Sub


Dim rng As Object

Exc.WorkBooks.Open(sFile).Activate
Set xlWb = Exc.ActiveWorkbook

xlWb.Worksheets(1).Activate

For s = 1 To 453

MOSet(s) = xlWb.ActiveSheet.Cells(s, 3).Value

MOAddr(s) = xlWb.ActiveSheet.Cells(s, 4).Value
MOParent(s) = xlWb.ActiveSheet.Cells(s, 5).Value
mookato(s) = xlWb.ActiveSheet.Cells(s, 6).Value

Next s

xlWb.Worksheets(2).Activate
Dim MV_Name(1 To 1502) As String
Dim MV_OKATO(1 To 1502) As String
Dim MV_Parent(1 To 1502) As Long
For j = 1 To 1502
MV_Parent(j) = xlWb.ActiveSheet.Cells(j, 3).Value
MV_OKATO(j) = xlWb.ActiveSheet.Cells(j, 4).Value
MV_Name(j) = xlWb.ActiveSheet.Cells(j, 5).Value

Next j
xlWb.Close

Set db = New Connection

db.CursorLocation = adUseClient
db.Open "PROVIDER=MSDASQL;dsn=new_pass;uid=;pwd=;"
Set adoRs = New Recordset
adoRs.Open "Select MO.MO_Name,MO.MO_Parent,MO.mo_Level,MO.MO_ADM_Address,MO.OKATO FROM MO", db, adOpenStatic, adLockOptimistic
adoRs.MoveLast

'Exit Sub
For a = 1 To 453
adoRs.AddNew
adoRs.Fields(0).Value = CStr(MOSet(a))
adoRs.Fields(1).Value = CInt(MOParent(a))
adoRs.Fields(2).Value = 4
adoRs.Fields(3).Value = CStr(MOAddr(a))
adoRs.Fields(4).Value = CStr(mookato(a))
Next a
adoRs.MoveLast

For Q = 1 To 1502
adoRs.AddNew
adoRs.Fields(0).Value = CStr(MV_Name(Q))
Z = MV_Parent(Q) + 42
adoRs.Fields(1).Value = CInt(Z)
adoRs.Fields(2).Value = 5
adoRs.Fields(4).Value = CStr(MV_OKATO(Q))
Next Q

db.Close
Set db = Nothing
Set adoRs = Nothing








Set Exc = Nothing
Set xlWb = Nothing
Set rng = Nothing

Set db = Nothing

Exit Sub
MsgBox ("âûïîëíåíî!")
End Sub
...
Рейтинг: 0 / 0
Импорт из Excel в бд SQL Server через ado в пустую таблицу
    #33821752
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно воспользоваться DTS пакетом для експорта импорта данных из sql сервера
по коду, можно в цикле ввода данных в массив из экселя
сразу вводить данные в рекордсет и не использовать массив
на счет рекордсета луше использовать комманнд с sqlс криптом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For s =  1  To  453 

======
"Insert into MO(MO_Name,MO_Parent,mo_Level,MO_ADM_Address,OKATO) Values (
'" &   xlWb.ActiveSheet.Cells(s,  3 ).Value & "','" & xlWb.ActiveSheet.Cells(s,  5 ).Value
& "','" & итд..
======

Next s
...
Рейтинг: 0 / 0
Импорт из Excel в бд SQL Server через ado в пустую таблицу
    #33821815
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
For s =  1  To  453 
With adoCommand
    .ActiveConnection = con
    .CommandText = "Insert into MO(MO_Name,MO_Parent,mo_Level,MO_ADM_Address,OKATO) Values ('" _
    & xlWb.ActiveSheet.Cells(s,  3 ).Value & "','" & xlWb.ActiveSheet.Cells(s,  5 ).Value _
    & "','" & xlWb.ActiveSheet.Cells(s,  6 ).Value & "','" & xlWb.ActiveSheet.Cells(s,  6 ).Value _
    & "','" & xlWb.ActiveSheet.Cells(s,  7 ).Value & "')"
    .Execute
End With
Next s

есть еще другая возможность через DE command с параметрами
и запросом
Insert into MO(MO_Name,MO_Parent,mo_Level,MO_ADM_Address,OKATO) Values (?,?,?,?,?)
...
Рейтинг: 0 / 0
Импорт из Excel в бд SQL Server через ado в пустую таблицу
    #33821864
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вероятнее всего у тебя не добавляются записи из-за ошибки.
ошибка скорее всего возникает из-за того что при пустом рекордсете ты пытаешься сделать MoveLast
Вообще непонятно, зачем ты испоьзуешь эту команду. убери ее и проверь
...
Рейтинг: 0 / 0
Импорт из Excel в бд SQL Server через ado в пустую таблицу
    #33822405
guest11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за советы.
После удаления MoveLast заработало и спустой таблицей. С DTS попробую.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Импорт из Excel в бд SQL Server через ado в пустую таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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