Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADO+MS Sql Server, ноль записей 
:(
    Опции темы
FINANSIST
Дата 26.12.2013, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



запрос в ssms отрабатывает норм (N записей >0)
ADO рекордсет возвращает 0
Код

Sub SServer_extractdata()
Dim conn As ADODB.Connection
Dim recset As ADODB.Recordset
Dim sql As String
Dim rnfrom As Range
Dim rn As Range
Dim x As Long: Dim y As Integer: Dim z As Integer

On Error Resume Next
Set rnfrom = Application.InputBox("Выберите 1 ячейку с текстом sql в примечании", "Ananiev_G:Request", Type:=8)
If rnfrom Is Nothing Then GoTo 10
If rnfrom.Cells.Count <> 1 Then GoTo 10
If rnfrom.Comment.Text = Null Then GoTo 10
On Error GoTo 0

On Error Resume Next
Set rn = Application.InputBox("Выберите ячейку начала импорта", "Ananiev_G:Request", Type:=8)
If rn Is Nothing Then GoTo 10
On Error GoTo 0

Set conn = New ADODB.Connection
conn.Open "Provider=SQLOLEDB;Data Source=SQL-AXAPTA-3;Initial Catalog=POSReports;user id=ananev-g;Trusted_Connection=Yes"
'Data Source - это Server; Initial Catalog - это БД

Let sql = Trim(Application.Clean(rnfrom.Comment.Text)) 'удаляем символ переноса строки

'Let sql = "use POSReports select top 100 customername from salesreportform1"

Debug.Print sql

Set recset = New ADODB.Recordset

With recset
    .ActiveConnection = conn
    On Error Resume Next
    .Open sql
    If Err.Number = -2147217900 Then
        MsgBox "Некорректный текст sql в примечании", vbCritical, "Ananiev_G:Allert"
        GoTo 10
    End If
End With
If (rn.Row + recset.RecordCount) >= 65636 Then
    MsgBox "Количество записей от стартовой ячейки превышает размеры листа по количеству строк", vbCritical, "Ananiev_G:Allert"
    GoTo 10
End If
If recset.RecordCount = -1 Then
    MsgBox "Запрос вернул 0 записей", vbCritical, "Ananiev_G:Allert"
    GoTo 10
End If
recset.MoveFirst
Let x = 0: Let y = 0: Let z = recset.Fields.Count
Do Until recset.EOF
For y = 0 To z - 1 Step 1 'Fields.Count-считает с 1 до N;recset.Fields()-считает с 0 до N
    Let rn.Offset(x, y) = recset.Fields(y)
Next
recset.MoveNext
Let x = x + 1
Loop

10: Set recset = Nothing
conn.Close
On Error GoTo 0
End Sub
'like





--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.