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

-
-
- Сообщения: 13
- Зарегистрирован: 12.04.2004 (Пн) 13:26
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 пять вываливается с той же ошибкой

Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: PetalBot и гости: 15