Проблема с copyfromrecordset

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

Проблема с copyfromrecordset

Сообщение ForYou » 15.04.2004 (Чт) 1:07

При передаче данных из базы при используюя нижеприведенный код:
Код: Выделить всё
Public Sub ShowDB()
Dim MyRec As Recordset
Dim ConnStr As String
Dim i As Integer
Dim j As Integer
On Error GoTo MyError
Set MyRec = MyCon.OpenRecordset("SELECT * FROM " & UserTable, dbOpenDynaset)
If MyRec.RecordCount < 1 Then GoTo MyError
MyRec.MoveFirst
Cells(3, 4) = MyRec.Fields.Count
Cells(4, 4) = MyRec.RecordCount

For j = 0 To MyRec.Fields.Count - 1
Cells(10, j + 1) = MyRec.Fields(j).Name
Next j
Range("A11").CopyFromRecordset MyRec
MyRec.Close
Set MyRec = Nothing
Exit Sub

MyError:
MyRec.Close
Set MyRec = Nothing
MsgBox "Selected table `" & UserTable & "` is empty", , "Information"
End Sub


получаю некорректные данные в случае если в базе тип данных установлен как char. Если тип данных в базе установлен как text, то получаю вообще ошибку. Подскажите в чем трабл плиз ?

ForYou
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 12.04.2004 (Пн) 13:26

Сообщение ForYou » 15.04.2004 (Чт) 10:31

Пытаюсь вывести данные через цикл и столкнулся вот с такой ошибкой:
Object invalid or no longer set, на строке: Cells(11, 11) = MyRec.Fields(j).Value Хотя такая кончтрукция работала..
Сам код вот:
Код: Выделить всё
Public Sub ShowDB()
Dim MyRec As Recordset
Dim i As Integer
Dim j As Integer
Dim query As String
query = "SELECT * FROM " & UserTable
Set MyRec = MyCon.OpenRecordset(query, dbOpenDynaset)
If MyRec.RecordCount < 1 Then GoTo MyError
MyRec.MoveFirst
Cells(3, 4) = MyRec.Fields.Count
Cells(4, 4) = MyRec.RecordCount

For j = 0 To MyRec.Fields.Count - 1
Cells(10, j + 1) = MyRec.Fields(j).Name
Next j

Do While Not MyRec.EOF
  For j = 0 To (MyRec.Fields.Count - 1) Step 1
  Cells(11, 11) = MyRec.Fields(j).Value
  Next
i = i + 1
MyRec.MoveNext
Loop

MyRec.Close
Set MyRec = Nothing
Exit Sub

MyError:
MyRec.Close
Set MyRec = Nothing
MsgBox "Selected table `" & UserTable & "` is empty", , "Information"
End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.04.2004 (Чт) 10:50

Вот, как бы сделал я
Код: Выделить всё
Public Sub ShowDB()
Dim MyRec As Recordset
Dim R As Long, C As Long, I As Long, SQL As String
SQL = "SELECT * FROM " & UserTable
Set MyRec = MyCon.OpenRecordset(SQL, dbOpenDynaset)
If MyRec.RecordCount = 0 Then
  MsgBox "Selected table `" & UserTable & "` is empty", , "Information"
Else
  ActiveSheet.Cells(3, 4) = MyRec.Fields.Count
  ActiveSheet.Cells(4, 4) = MyRec.RecordCount
  For C = 0 To MyRec.Fields.Count - 1
    ActiveSheet.Cells(10, C + 1) = MyRec.Fields(C).Name
  Next C
  R = 10
  Do Until MyRec.EOF
    R = R + 1
    For C = 0 To MyRec.Fields.Count - 1
      ActiveSheet.Cells(10 + R, C + 1) = MyRec.Fields(C).Value
    Next C
    MyRec.MoveNext
  Loop
End If
MyRec.Close
Set MyRec = Nothing
End Sub
Lasciate ogni speranza, voi ch'entrate.

ForYou
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 12.04.2004 (Пн) 13:26

Сообщение ForYou » 15.04.2004 (Чт) 10:54

на строке с ActiveSheet.Cells(10 + R, C + 1) = MyRec.Fields(C).Value пять вываливается с той же ошибкой :cry:


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 14

    TopList