Помогите плиз разрешить один затык.

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Помогите плиз разрешить один затык.

Сообщение george »

Есть аппликация в VB. Она выплевывает данные из базы данных в Word файл. Данные выбираются по Скюль запросу (типа .OpenDataSource(Name:="",bla-bla-bla,Query="select * from ... etc"), наизусть не помню, код на работе.

Да все бы и хорошо, но когда длина поля превышает определенную длину, подозреваю что 256, то остаток строки просто обгрызается. Проверил в базе - все ОК, да и длина там 600. Грешил на VB программера, думал что он где-то длину поля усек, раздобыл его исходники - нет. Где собака порылась-то? ODBC что ли безобразничает? И как забороть-то?

Спасибы.
Аватара пользователя
Ranger
Маньяк
Сообщения: 1199
Зарегистрирован: 22 окт 2003, 18:28
Откуда: 2:5025 -> Burnaby

Сообщение Ranger »

код надо смотреть...
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

код в студию.

ПС. А почему не ADO используете?
Аватара пользователя
Проф. Преображенский
Графоман
Сообщения: 20276
Зарегистрирован: 08 ноя 2006, 11:10

Сообщение Проф. Преображенский »

А чем смотришь? Wordом? Может Ворд как-то строку режет или не показывает? Посмотри чем-нибудь другим.
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

Dim oApp As New Word.Application
Dim oMainDoc As Word.Document
Dim oSel As Word.Selection

'Start a new main document for the mail merge
oMainDoc = oApp.Documents.Open(FileName:="C:\Folder\WordFile.doc", ReadOnly:=True)



With oMainDoc.MailMerge
.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters

'Set up the mail merge data source
.OpenDataSource(Name:="", Connection:="DSN=MailMerge;UID=XXX;PWD=12345", SQLStatement:="SELECT * FROM Table")

Dim str As String = ""
Dim rng As Word.Range = oMainDoc.Range(Start:=1, End:=1)

'Add the field codes to the document to create the form letter
With .Fields
oSel = oApp.Selection 'Reduces interface requests


'******** Text Field ************************************
rng = oMainDoc.Range(Start:=45, End:=45)
rng.Select()
.Add(oSel.Range, "TEXT") 'Long text
End With
End With

Dim ret

'Perform the mail merge to a new document
With oMainDoc
.MailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument

.MailMerge.DataSource.ActiveRecord = Word.WdMailMergeActiveRecord.wdLastRecord
ret = MsgBox(.MailMerge.DataSource.ActiveRecord & " records will be " & _
"merged. Click Yes to continue or No to quit.", _
vbYesNo + MsgBoxStyle.SystemModal)



If ret = vbYes Then
.MailMerge.Execute(Pause:=False)
Else


End With

Any idea?
Thanks!
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

294 characters is OK, 295 fails... I mean it outputs up to 294 characters, the rest of the string gets truncated, mlja.
Аватара пользователя
dima
Житель
Сообщения: 690
Зарегистрирован: 19 фев 2003, 19:26
Откуда: Хабаровск->Toronto

Сообщение dima »

Используя DSN MailMerge подсоединись к той-же самой базе данных через например WinSql и сделай запрос. Проверь что данные из текстового поля для записи которую VB "обрезает" пришли целиком.

Если да, то настройка DSN и ODBC драйвер непричем.

Проверь, что данные из текстового поля не содержат посередине признака конца, чтоб VB со своими bstr просто не обрубил строку.

Из VB сбрось в обычный текстовый файл, чтоб проверить, что данные не содержат какого-то символа, который трактуется Word-ом как управляющий.
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

I checked it with DbVisualizer, it works... So the culprit is Word most likely... Suxx!

Thanks, I will be digging further.
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

To whom it may concern.

Если может кому понадобится. Во-первЫх строках MS Word suxx. Поля типа String длиной более 255 не глотает. (я ошибался, когда сказал 294. Пересчет дал 255).

НИГДЕ, - ни в MSDN, ни в хугле, ни в help-е по . Net - никаких объяснений по ограничениям нету. По касательной зацепил, что длинные поля должны быть описаны как memo или note, что ли.

В случае с моей датабазой 1 Мегабайт я не обязан описывать даже.

Короче, пришлось все немного поломать. M$ сукись, ответсвенно заявляю ;)
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

george писал(а): Короче, пришлось все немного поломать. M$ сукись, ответсвенно заявляю ;)
Может лучше тогда другую платформу поискать?
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

Не юродствуй
SlavaM
Пользователь
Сообщения: 72
Зарегистрирован: 27 май 2006, 13:47
Откуда: Мурманск - Ванкувер

Сообщение SlavaM »

vg писал(а):
george писал(а): Короче, пришлось все немного поломать. M$ сукись, ответсвенно заявляю ;)
Может лучше тогда другую платформу поискать?
А че, кто-то знает платформу, где в документации все досконально описано? Просто интересуюсь. Наверное те, кто кричат что-то про МС сакс - те знают, да?
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

SlavaM писал(а):
vg писал(а):
george писал(а): Короче, пришлось все немного поломать. M$ сукись, ответсвенно заявляю ;)
Может лучше тогда другую платформу поискать?
А че, кто-то знает платформу, где в документации все досконально описано? Просто интересуюсь. Наверное те, кто кричат что-то про МС сакс - те знают, да?
Лично я в М$шоп. Не жалуюсь.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

george писал(а):Не юродствуй
Юродство - это счастье.
Аватара пользователя
george
Графоман
Сообщения: 14127
Зарегистрирован: 20 июл 2003, 12:48
Откуда: M2R

Сообщение george »

Да ну вас нафик... Должны же быть limitations какие-то описаны
Ответить