Добрый день уважаемые гуру Excel и не только, прошу помощи ибо это не укладываеться в голове суть в том что моя программа переносит данные в из Excel в переменные SQL то есть присваивает им значение дак вот я понял как переносить текст но вот с датой какая то проблема с типом данных ошибку выдаёт прошу помощи [vba]
Код
Dim Conn Sub test_connALL() Dim cmd As ADODB.Command Dim Conn As ADODB.Connection Dim rs As ADODB.Recordset Dim lLastrow, i As Long Dim iCell As Range Dim whereID As Long Dim FAM, IM, OT, sex, issued As String Dim Number As String Dim BDAT, datePASS As date
'On Error GoTo Err iTimer! = Timer Set Conn = New ADODB.Connection '------------------------------------------------------------------------------------------------------------------ If UserForm1.TextBox2.Text = "" And UserForm1.TextBox1.Text = "" Then UserForm1.Show Else End If '------------------------------------------------------------------------------------------------------------------ Application.ScreenUpdating = False lLastrow = Cells(Rows.Count, 3).End(xlUp).Row i = 2 '------------------------------------------------------------------------------------------------------------------ Conn.ConnectionString = "driver={SQL Server};server=155.4.3.7;uid=" & UserForm1.TextBox1.Text & ";pwd=" & UserForm1.TextBox2.Text & ";database=MainDWH" Conn.Open '------------------------------------------------------------------------------------------------------------------ 'On Error Resume Next
With ThisWorkbook.Worksheets(2) For Each iCell In .Range("C3", Cells(lLastrow, 3)) i = i + 1 If Cells(i, 65) <> "" Then GoTo Point FAM = iCell 'Фамилия IM = iCell.Offset(0, 1) 'Имя OT = iCell.Offset(0, 2) 'Отчество BDAT = iCell.Offset(0, 4) 'Датарождения sex = iCell.Offset(0, 6) 'Пол Number = iCell.Offset(0, 8) 'Серия и номер паспорта datePASS = iCell.Offset(0, 9) 'Дата регистрации issued = iCell.Offset(0, 10) 'Место регистрации
Cells(i, 65).CopyFromRecordset rs rs.Close Point: Next End With '------------------------------------------------------------------------------------------------------------------ Application.ScreenUpdating = True MsgBox "Время выполнения макроса составило " & _ Timer - iTimer! & " сек.", vbExclamation, "" Conn.Close Set rs = Nothing Set con = Nothing Exit Sub '------------------------------------------------------------------------------------------------------------------ 'Err: 'MsgBox ("Проверьте корректность ввода") End Sub
[/vba]
В SQL тоже стоит Date и необходимо привести эту дату в вид (dd-mm-yyyy) или (dd.mm.yyyy) а я с ошибкой (
Добрый день уважаемые гуру Excel и не только, прошу помощи ибо это не укладываеться в голове суть в том что моя программа переносит данные в из Excel в переменные SQL то есть присваивает им значение дак вот я понял как переносить текст но вот с датой какая то проблема с типом данных ошибку выдаёт прошу помощи [vba]
Код
Dim Conn Sub test_connALL() Dim cmd As ADODB.Command Dim Conn As ADODB.Connection Dim rs As ADODB.Recordset Dim lLastrow, i As Long Dim iCell As Range Dim whereID As Long Dim FAM, IM, OT, sex, issued As String Dim Number As String Dim BDAT, datePASS As date
'On Error GoTo Err iTimer! = Timer Set Conn = New ADODB.Connection '------------------------------------------------------------------------------------------------------------------ If UserForm1.TextBox2.Text = "" And UserForm1.TextBox1.Text = "" Then UserForm1.Show Else End If '------------------------------------------------------------------------------------------------------------------ Application.ScreenUpdating = False lLastrow = Cells(Rows.Count, 3).End(xlUp).Row i = 2 '------------------------------------------------------------------------------------------------------------------ Conn.ConnectionString = "driver={SQL Server};server=155.4.3.7;uid=" & UserForm1.TextBox1.Text & ";pwd=" & UserForm1.TextBox2.Text & ";database=MainDWH" Conn.Open '------------------------------------------------------------------------------------------------------------------ 'On Error Resume Next
With ThisWorkbook.Worksheets(2) For Each iCell In .Range("C3", Cells(lLastrow, 3)) i = i + 1 If Cells(i, 65) <> "" Then GoTo Point FAM = iCell 'Фамилия IM = iCell.Offset(0, 1) 'Имя OT = iCell.Offset(0, 2) 'Отчество BDAT = iCell.Offset(0, 4) 'Датарождения sex = iCell.Offset(0, 6) 'Пол Number = iCell.Offset(0, 8) 'Серия и номер паспорта datePASS = iCell.Offset(0, 9) 'Дата регистрации issued = iCell.Offset(0, 10) 'Место регистрации
Cells(i, 65).CopyFromRecordset rs rs.Close Point: Next End With '------------------------------------------------------------------------------------------------------------------ Application.ScreenUpdating = True MsgBox "Время выполнения макроса составило " & _ Timer - iTimer! & " сек.", vbExclamation, "" Conn.Close Set rs = Nothing Set con = Nothing Exit Sub '------------------------------------------------------------------------------------------------------------------ 'Err: 'MsgBox ("Проверьте корректность ввода") End Sub
[/vba]
В SQL тоже стоит Date и необходимо привести эту дату в вид (dd-mm-yyyy) или (dd.mm.yyyy) а я с ошибкой (
Блин неа не в курсе был спасибо!!!! , а то я и думаю почему тип данных в параметре только ---------------------------------------------------------------------------------------------- adBSTR 8 Указывает на заканчивающуюся нулем строку символов (Unicode) (DBTYPE_BSTR). ---------------------------------------------------------------------------------------------- сейчас попробую
Блин неа не в курсе был спасибо!!!! , а то я и думаю почему тип данных в параметре только ---------------------------------------------------------------------------------------------- adBSTR 8 Указывает на заканчивающуюся нулем строку символов (Unicode) (DBTYPE_BSTR). ---------------------------------------------------------------------------------------------- сейчас попробуюElhust
_Boroda_, ------------------------------------------------ Microsoft Visual Basic for Applications ------------------------------------------------ Run-time error '-2147217887 (80040e21)':
Automation error ------------------------------------------------ ОК Справка ------------------------------------------------ всё равно это хрень с типом данных лезет
_Boroda_, ------------------------------------------------ Microsoft Visual Basic for Applications ------------------------------------------------ Run-time error '-2147217887 (80040e21)':
Automation error ------------------------------------------------ ОК Справка ------------------------------------------------ всё равно это хрень с типом данных лезетElhust
Извините, что ссылки, а не просто пояснения, но четко ответить на Ваш вопрос мне довольно сложно. Нужно смотреть файл, базу, настройки, разбираться во всем этом. Возможно Вам поможет кто-то, кто часто занимается базами SQL. Но это не я к сожалению
Извините, что ссылки, а не просто пояснения, но четко ответить на Ваш вопрос мне довольно сложно. Нужно смотреть файл, базу, настройки, разбираться во всем этом. Возможно Вам поможет кто-то, кто часто занимается базами SQL. Но это не я к сожалению_Boroda_
Доброе время суток. Объявление хранимой процедуры приведите, пожалуйста, а то не понятно, те ли типы вы используете. Для текста nvarchar вполне себе подходят adVarWChar. Ну, и что возвращает ХП тоже не мешало бы.
Доброе время суток. Объявление хранимой процедуры приведите, пожалуйста, а то не понятно, те ли типы вы используете. Для текста nvarchar вполне себе подходят adVarWChar. Ну, и что возвращает ХП тоже не мешало бы.anvg
_Boroda_, и всё же спасибо за внимание и просто благодарю за ответы .. я тут на форуме знаю одного пользователя или как правильно говорить форучанина ... anvg , он как я понимаю хорошо знает эту тему .. правда я в личку написал что такую тему создал и прошу помощи ... наверное не в сети пока , буду ждать искать решать .
_Boroda_, и всё же спасибо за внимание и просто благодарю за ответы .. я тут на форуме знаю одного пользователя или как правильно говорить форучанина ... anvg , он как я понимаю хорошо знает эту тему .. правда я в личку написал что такую тему создал и прошу помощи ... наверное не в сети пока , буду ждать искать решать .Elhust
anvg, да там получается что XML в переменной выводиться просто SELECT @AfsMessage ошибка опять ------------------------------------------------ Run-time error '3708':
Application-defined or object-defined error ------------------------------------------------
anvg, да там получается что XML в переменной выводиться просто SELECT @AfsMessage ошибка опять ------------------------------------------------ Run-time error '3708':
Application-defined or object-defined error ------------------------------------------------Elhust
anvg, блин у меня там процедура в процедуре была не заметил что не убрал селект один ... вообщем ошибка теперь такая там тупо пусто везде ----------------------------------------- Microsoft Visual Basic for Applications -----------------------------------------
----------------------------------------- ОК Справка -----------------------------------------
anvg, блин у меня там процедура в процедуре была не заметил что не убрал селект один ... вообщем ошибка теперь такая там тупо пусто везде ----------------------------------------- Microsoft Visual Basic for Applications -----------------------------------------
----------------------------------------- ОК Справка -----------------------------------------Elhust
блин у меня там процедура в процедуре была не заметил что не убрал селект один
Видимо нужно просматривать код ХП дальше, коль окончательного вывода нет. Может стоит тогда сделать в ХП Ouput переменную и возвращать через неё результат? [vba]
блин у меня там процедура в процедуре была не заметил что не убрал селект один
Видимо нужно просматривать код ХП дальше, коль окончательного вывода нет. Может стоит тогда сделать в ХП Ouput переменную и возвращать через неё результат? [vba]
anvg, проверил весь код всё работает без excel выводит XML, там же в SQL обозначил переменные значениями и на вхождение оставил только одну чтобы проверять как пишется ... и вот такая сводка по типам данным у меня работает Если Текст то Excel (String), CreateParameter(adBSTR), SQL(nvarchar) - работает на все 100%
Если Дата то Excel (), CreateParameter(), SQL()-??????? Если Текст и Цифры то Excel (), CreateParameter(), SQL()-??????? как то так
anvg, проверил весь код всё работает без excel выводит XML, там же в SQL обозначил переменные значениями и на вхождение оставил только одну чтобы проверять как пишется ... и вот такая сводка по типам данным у меня работает Если Текст то Excel (String), CreateParameter(adBSTR), SQL(nvarchar) - работает на все 100%
Если Дата то Excel (), CreateParameter(), SQL()-??????? Если Текст и Цифры то Excel (), CreateParameter(), SQL()-??????? как то такElhust
anvg, Если Дата то Excel (Date), CreateParameter(adDBTimeStamp), SQL(Datetime2)- работает на все 100% А ещё все переменные и их вхождения должны быть в том же порядке оказывается)
anvg, Если Дата то Excel (Date), CreateParameter(adDBTimeStamp), SQL(Datetime2)- работает на все 100% А ещё все переменные и их вхождения должны быть в том же порядке оказывается)Elhust
Каждый сам выбирает правила игры
Сообщение отредактировал Elhust - Вторник, 28.03.2017, 08:04