Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с copyfromrecordset / 6 сообщений из 6, страница 1 из 1
15.04.2004, 02:06:55
    #32481970
4you
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с copyfromrecordset
При передаче данных из базы при используюя нижеприведенный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
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, то получаю вообще ошибку. Подскажите в чем трабл плиз ?
...
Рейтинг: 0 / 0
15.04.2004, 02:12:01
    #32481973
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с copyfromrecordset
text отличается от char , тут все правильно, его нужно по другому брать.

А в чем именно данные некорректны?
Попронуй тип varchar

Magnus
...
Рейтинг: 0 / 0
15.04.2004, 11:24:02
    #32482361
4you
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с copyfromrecordset
1. С varchar все ок. А если по другому брать то как? Я знаю только если через цикл по кол-ву записей в recordset.

2. А данные некорректны в том что в Excel-е выводятся в виде квадратиков :(
...
Рейтинг: 0 / 0
15.04.2004, 11:30:26
    #32482379
4you
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с copyfromrecordset
Пытаюсь вывести данные через цикл и столкнулся вот с такой ошибкой:
Object invalid or no longer set, на строке: Cells(11, 11) = MyRec.Fields(j).Value Хотя такая кончтрукция работала..
Сам код вот:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
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

...
Рейтинг: 0 / 0
15.04.2004, 13:21:23
    #32482634
Sav
Sav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с copyfromrecordset
Вопрос проблемы возникают сразу на первой записи первом поле или что-то копирует?
Если копируется часть. См. запись на которой затыкается.
1. Возможно, что либо слишком большой обьем. У ячеек есть ограничение по размеру, как на отображение так и на ввод.
2. Excel воспринимает вставляемую информацию не как текст, а как формулу и ругается. Здесь надо по месту смотреть. Я добавлял апостроф к текстовым полям и меня устраивал так выход.

И наверное подразумевается, что все не в одну ячейку записывается (Cells(11,11)), а в разные (Cells(i,j+1)).
...
Рейтинг: 0 / 0
15.04.2004, 20:13:14
    #32483485
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с copyfromrecordset
В сиквел сервере, поля text, ntext, image не хранятся прямо в строках, там хранятся указатели на данные и text это уже не юникод, потому ты и видишь квадратики. Его нужно брать через readtext передавая параметром указатель и размер читаемого блока. Поля предназначены для хранения очень больших обьемов данных(до 2 гб). Вообщем это не твой случай.

на счет ошибки, действительно, не помешало бы получить больше инфы. На каком моменте затыкается?


Magnus
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с copyfromrecordset / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]