Run-Time error 3265

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Run-Time error 3265

Сообщение alex shestov » 28.10.2005 (Пт) 9:34

Вопрос к уважаемым следующий:
На одном из компьютеров не выполняется следующий код
Код: Выделить всё

Dim AppExl As Excel.Application
Dim wb As Excel.Workbook
Dim rs, ds As DAO.Recordset
Dim fl As Boolean
Dim i As Long, j As Long
Dim TDate As Date
Dim AvrDSql, r1 As String
TDate = CDate([Forms]![MainForm]![TodayDate])
i = 1
fl = True
Set AppExl = GetObject(, "Excel.Application.10") 'Excel.Application.10")
If AppExl Is Nothing Then
    Set AppExl = CreateObject("Excel.Application")
    If AppExl Is Nothing Then
        Err.Raise vbError + 1, ,
        Exit Sub
    End If
    AppExl.Visible = False
    fl = False
End If
Set wb = AppExl.Workbooks.OpenXML("J:\_Documents\1\Gko1.xlt")
If wb Is Nothing Then
    Err.Raise vbError + 1, ,
    Exit Sub
End If
Dim strSql As String
strSql = ("SELECT DealGKO_Svodka.ID, DealGKO_Svodka.Emitent, DealGKO_Svodka.Date_Avr, DealGKO_Svodka.PriseAvr, " _
        & "DealGKO_Svodka.Doxodnost, DealGKO_Svodka.Durachiy, DealGKO_Svodka.Quantity, DealGKO_Svodka.Value, " _
        & "DealGKO_Svodka.ValueNKD, DealGKO_Svodka.Value_All, DealGKO_Svodka.ComisTP, DealGKO_Svodka.ComisBrok, " _
        & "DealGKO_Svodka.[Cupon%], DealGKO_Svodka.TN, DealGKO_Svodka.Value_Ofert, DealGKO_Svodka.Profit_aver, DealGKO_Svodka.Prise_Rinok/100, " _
        & "DealGKO_Svodka.DurachiyTek, DealGKO_Svodka.ValueTek, DealGKO_Svodka.ValueNKDTek, DealGKO_Svodka.Value_AllTek, " _
        & "DealGKO_Svodka.Profit_Pay, DealGKO_Svodka.OfertaDate FROM DealGKO_Svodka;")
       
Set rs = CurrentDb.OpenRecordset(strSql)
rs.MoveFirst
With wb.Sheets(1)
    While Not rs.EOF
        For j = 1 To rs.Fields.Count
            .Cells(i, j).Value = rs.Fields(j).Value


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

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 28.10.2005 (Пт) 11:15

Странно, что на других машинах работает. По правильному должно везде не работать. Ибо в ADO индексация семейств начинается с 0. Т.е. надо так:
Код: Выделить всё
For j = 0 To rs.Fields.Count-1

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 28.10.2005 (Пт) 12:02

Gloom писал(а):Странно, что на других машинах работает. По правильному должно везде не работать. Ибо в ADO индексация семейств начинается с 0. Т.е. надо так:
Код: Выделить всё
For j = 0 To rs.Fields.Count-1


Вы знаете, вот у меня работает и с 1 и с 0. Сейчас опять проверил на том компе, там ни с 1 ни 0 не работает. Только если сначало ошибка писалась на русском, то теперь приходит на туже строку, но на англ. языке...непонятность вообщем

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 28.10.2005 (Пт) 12:04

Может ли это зависеть от настроек Access, Excel, VBA?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.10.2005 (Пт) 12:04

Раз рекордсет DAO, то заюзай cells(1,1).CopyFromRecordset
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 28.10.2005 (Пт) 12:10

GSerg писал(а):Раз рекордсет DAO, то заюзай cells(1,1).CopyFromRecordset


А в чем может быть причина того, что на одном из компьютеров сбой дает?

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 31.10.2005 (Пн) 16:34

GSerg писал(а):Раз рекордсет DAO, то заюзай cells(1,1).CopyFromRecordset


Что-то у меня не получается написать код с данными параметрами. Не поможете, плизз. :roll:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2005 (Пн) 16:43

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.11.2005 (Вт) 10:38

Кто может подсказать? Изменил код как мне советовали, но теперь перестала работать автоматическая подстановка формул в ячейки.
В чем может быть проблема?
Код: Выделить всё
rs.MoveFirst
With wb.Sheets(1)
    While Not rs.EOF
        For j = 0 To rs.Fields.Count - 1
            '.Cells(i, j).Value = rs.Fields(j).Value
            .Cells(i, j).CopyFromRecordset rs
        Next j
     .Cells(i, j - 18).FormulaR1C1 = "=YM(RC" & CStr(j - 21) & ",RC" & CStr(j - 20) & ",RC" & CStr(j - 19) & ""
     .Cells(i, j - 17).FormulaR1C1 = "=Durachiy(RC" & CStr(j - 21) & ",RC" & CStr(j - 20) & ",RC" & CStr(j - 18) & ", 365"
     .Cells(i, j - 10).FormulaR1C1 = "=Kupon(RC" & CStr(j - 21) & ",RC" & CStr(j - 20) & ""
     .Cells(i, j - 7).Value = "" & CDbl(TDate) & ""
     If .Cells(i, j) <> 0 Then
    .Cells(i, j - 8).FormulaR1C1 = "=YM(RC" & CStr(j - 21) & ",RC" & CStr(j) & ",RC" & CStr(j - 6) & ""
    Else
    .Cells(i, j - 8).FormulaR1C1 = "=YM(RC" & CStr(j - 21) & ",RC" & CStr(j - 7) & ",RC" & CStr(j - 6) & ""
    End If
    .Cells(i, j - 5).FormulaR1C1 = "=Durachiy(RC" & CStr(j - 21) & ",RC" & CStr(j - 7) & ",RC" & CStr(j - 8) & ", 365"
    .Cells(i, j - 4).Formula = "=(RC" & CStr(j - 16) & "*RC" & CStr(j - 9) & "*RC" & CStr(j - 6) & ")"
    .Cells(i, j).FormulaR1C1 = "=ÍÊÄ(RC" & CStr(j - 21) & ",RC" & CStr(j - 7) & ", 365"
    .Cells(i, j - 3).Formula = "=(RC" & CStr(j + 1) & "*RC" & CStr(j - 16) & ")"
    .Cells(i, j - 2).Formula = "=(RC" & CStr(j - 3) & "+RC" & CStr(j - 6) & ")"
    .Cells(i, j - 1).FormulaR1C1 = "=YS(RC" & CStr(j - 21) & ",RC" & CStr(j - 20) & ",RC" & CStr(j - 19) & ",RC" & CStr(j - 7) & ",RC" & CStr(j - 6) & ""
rs.MoveNext
        i = i + 1
        Wend

Проставляет только в первую запись а дальше не идет... :roll:

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.11.2005 (Вт) 12:40

Всем спасибо за помощь!
Уже сделал сам. :)

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 01.11.2005 (Вт) 12:57

Радость моя была не долгой. :((( При проверке на другом компьютере, из-за которого все изначально и началось, выяснилось что опять ошибка теперь на эту строку и ошибка 1004:
Код: Выделить всё
.Cells(i, j).CopyFromRecordset rs


Кто знает в очередной раз, в чем проблема?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.11.2005 (Вт) 12:59

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 27.09.2007 (Чт) 17:26

кстати, столкнулся с той же ошибкой...
как потом выяснилось - у меня в таблице mdb
поле называлось например БАНК а в VB при написании кода
book![БАНК]
автоматически переводилось в book![Банк]
поэтому на других машинах это не понималось
выход - переименовал поле БАНК в Банк
и все за*** работало

PS использование русских названий полей в mdb, dbf...
выше излагал автор - strSql = ("SELECT DealGKO_Svodka.ID, DealGKO_Svodka.Emitent,
итд - жуть как не удобно при выводе в таблицу через Datagreed, MSFlexgreed и им подобным - наименования столбцов будут не по русски
для кто не знает ( ибо сам это искал но не нашел, допер все таки сам) - в mdb можно обозвать поле по русски - например
производитель водки и при обращении указывать в квадратных скобках ("SELECT [производитель водки]...

при этом в таблицах MSFlexgreed итд название заголовка будет нормально читаемым и не придется программно переименоввывать поля.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 44

    TopList