powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблема с copyfromrecordset
6 сообщений из 6, страница 1 из 1
Проблема с copyfromrecordset
    #32481970
4you
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При передаче данных из базы при используюя нижеприведенный код:
Код: 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
Проблема с copyfromrecordset
    #32481973
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
text отличается от char , тут все правильно, его нужно по другому брать.

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

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

2. А данные некорректны в том что в Excel-е выводятся в виде квадратиков :(
...
Рейтинг: 0 / 0
Проблема с copyfromrecordset
    #32482379
4you
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь вывести данные через цикл и столкнулся вот с такой ошибкой:
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
Проблема с copyfromrecordset
    #32482634
Sav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sav
Гость
Вопрос проблемы возникают сразу на первой записи первом поле или что-то копирует?
Если копируется часть. См. запись на которой затыкается.
1. Возможно, что либо слишком большой обьем. У ячеек есть ограничение по размеру, как на отображение так и на ввод.
2. Excel воспринимает вставляемую информацию не как текст, а как формулу и ругается. Здесь надо по месту смотреть. Я добавлял апостроф к текстовым полям и меня устраивал так выход.

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

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


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


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