Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
Не получается записать в переменную, объявленную как string, текст длиннее 255 симоволов. При записи в эту переменную аксесс тупо отрезает все "лишние" символы. Можно ли как-то обойти эту проблему? Или у меня просто кривые руки?
13 фев 07, 14:37    [3778339]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Restavraciya
Member [заблокирован]

Откуда:
Сообщений: 5139
Если эта "переменная" - текстовое поле формы связанное с полем текстого типа источника данных таблица, то руки прямые :-)
13 фев 07, 14:40    [3778360]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
Restavraciya
Если эта "переменная" - текстовое поле формы связанное с полем текстого типа источника данных таблица, то руки прямые :-)


Нет, все идет только из кода:

    Dim ww As String
    Dim intNum As Integer
    Dim strQuery As String(1024)



    strQuery = "SELECT *,dbo.GetPgs4Daily(FileID) AS Pages,dbo.fGT(FileID) AS Tr,dbo.fGE(FileID)as Ed " & _
        "FROM tTranslations " & _
        "WHERE year(datereceived)=year(getdate())and datepart(" & ww & ",DateDelivery)=" & intNum & " and datepart(" & ww & ",DateReceived)<=" & _
        intNum & " or datedelivery is null"

Когда добавляю ещё проверку одного параметра:
        If Forms!ChoosePeriod.CheckMy = -1 Then strQuery = strQuery & " and Manager=User_id()"

последние скобки у меня уже не помещаются
13 фев 07, 14:44    [3778381]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
LeonM
Member

Откуда: Bayern, Deutschland
Сообщений: 598
Проверьте:
Sub sss()
    Dim i, s
    For i = 1 To 10000
        s = s & "s"
    Next
    i = Len(s)
    Stop
End Sub
13 фев 07, 14:46    [3778399]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Restavraciya
Member [заблокирован]

Откуда:
Сообщений: 5139
скобки для чего ?
может надо * ?
13 фев 07, 14:52    [3778452]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
LeonM
Проверьте:


Проверил, работает. В чем секрет не понял. Попробовал сделать

Dim strSQL 

у меня количество символов увеличилось до 256 ;) но пропала закрывающая кавычка О_О
13 фев 07, 14:52    [3778458]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
Restavraciya
скобки для чего ?
может надо * ?


Скобки - показатель того, что это SQL функция.
13 фев 07, 14:54    [3778466]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Restavraciya
Member [заблокирован]

Откуда:
Сообщений: 5139
sunnya
Restavraciya
скобки для чего ?
может надо * ?


Скобки - показатель того, что это SQL функция.
С этого места поподробнее
13 фев 07, 14:58    [3778508]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
Restavraciya
sunnya
Скобки - показатель того, что это SQL функция.
С этого места поподробнее

У меня есть формочка, в которой я генерирую SQL запрос на основании контролов на форме: куча всяких переключателей, выпадающий список, чекбокс.

После того как пользователь выбрал все, что ей надо, она нажимает кнопочку, по которой формируется SQl запрос, отправляемый собственно говоря на SQl сервак для последующей обработки. Дальше у меня все в шоколаде. Проблема в ВБА. Он просто не дает мне запихать столько символов в переменную сколько мне хочется
13 фев 07, 15:05    [3778552]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
COP001
Member

Откуда: Ростов-на-Дону
Сообщений: 91
я тоже с этим сталкивался, как обойти не нашел, поэтому собирал строку не в переменную, а прямо в DoCmd.RunSQL("SELECT ...")
Так срабатывает нормально.
Хотя ситуёвина непонятная и неприятная.
13 фев 07, 15:23    [3778679]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Restavraciya
Member [заблокирован]

Откуда:
Сообщений: 5139
sunnya
Restavraciya
sunnya
Скобки - показатель того, что это SQL функция.
С этого места поподробнее

У меня есть формочка, в которой я генерирую SQL запрос на основании контролов на форме: куча всяких переключателей, выпадающий список, чекбокс.

После того как пользователь выбрал все, что ей надо, она нажимает кнопочку, по которой формируется SQl запрос, отправляемый собственно говоря на SQl сервак для последующей обработки. Дальше у меня все в шоколаде. Проблема в ВБА. Он просто не дает мне запихать столько символов в переменную сколько мне хочется
Извиняюсь за свою ограниченность, но я так и не понял - зачем стоят скобки (тем более что у меня пример ругается на них)
Ну и присваивайте переменной интерпритацию ваших чекбоксов разбавляя их ЭНДами и ОРами
Я тоже динамически набираю строку - никогда не упирался в максимум длины (256 символов точно переваливало)
13 фев 07, 15:59    [3778911]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
Restavraciya
Извиняюсь за свою ограниченность, но я так и не понял - зачем стоят скобки (тем более что у меня пример ругается на них)
Ну и присваивайте переменной интерпритацию ваших чекбоксов разбавляя их ЭНДами и ОРами
Я тоже динамически набираю строку - никогда не упирался в максимум длины (256 символов точно переваливало)


В MsSQL есть такая функция встроенная user_id(), без скобок она не работает. Пустые скобки в данном случае обозначают текущего пользователя, следственно функция возвращает айдишник текущего пользователя и его уже можно сравнить с колонкой в таблице.
13 фев 07, 16:14    [3779025]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
COP001
я тоже с этим сталкивался, как обойти не нашел, поэтому собирал строку не в переменную, а прямо в DoCmd.RunSQL("SELECT ...")
Так срабатывает нормально.
Хотя ситуёвина непонятная и неприятная.


Спасибо, навел на очень хорошую идею:

    strQuery = "SELECT *,dbo.GetPgs4Daily(FileID) AS Pages,dbo.fGT(FileID) AS Tr,dbo.fGE(FileID)as Ed " & _
        "FROM tTranslations " & _
        "WHERE (year(datereceived)=year(getdate())and datepart(" & ww & ",DateDelivery)=" & intNum & " and datepart(" & ww & ",DateReceived)<=" & _
        intNum & " or datedelivery is null)"
        
        If Forms!ChoosePeriod.CheckMy = -1 Then strQ1 = " and Manager=User_id()"
        
    Forms!WM.RecordSource = strQuery & strQ1

Вот это уже работает)))
13 фев 07, 16:15    [3779037]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
ОБЪЯСНИТЕ ТУПОМУ!!!! ПОЧЕМУ ЭТО РАБОТАЕТ, А В МОЕМ КОДЕ НЕ РАБОТАЕТ, А ОБРЕЗАЕТ?!!!
Sub sss()
    Dim i, s
    For i = 1 To 10000
        s = s & "s"
    Next
    i = Len(s)
    Stop
End Sub
[/quot]

а то я уже капсом как блондинка начал орать(((
13 фев 07, 16:18    [3779065]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
не догоняю
Guest
sunnya

Нет, все идет только из кода:

    .......
    Dim strQuery As String(1024)

...................

последние скобки у меня уже не помещаются

у меня Dim strQuery As String(1024) даже не компилируется. Если убрать, то все помещается в строчную переменную нормально. Или я чего-то не догоняю.
13 фев 07, 16:23    [3779093]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
bgn
Member

Откуда:
Сообщений: 243
а сказали же что не () а *
нужно

F1
Существует два типа строковых значений:

· Строки переменной длины, которые могут содержать до приблизительно 2 миллиардов (2^31) символов.
· Строки постоянной длины, которые могут содержать от 1 до приблизительно 64K (2^16) символов.

Примечание. Не допускается использование в модулях класса строк постоянной длины, описанных с ключевым словом Public.

Кодами для символов, образующих значения типа String, служат целые числа в диапазоне от 0 до 255. Первые 128 символов (0–127) набора символов, соответствуют буквам и символам стандартной американской клавиатуры. Эти первые 128 символов совпадают с набором символов ASCII. Следующие 128 символов (128–255) представляют буквы национальных алфавитов, буквы с надстрочными символами, символы денежной единицы и дроби. Символом описания типа для типа String служит символ доллара ($).


Dim s*10 'строка из 10 символоФ
Dim s as String 'строка переменной длины
Dim s 'переменная типа Variant


F1
Тип данных Variant является типом, к которому относятся все переменные, не описанные явно с другим типом данных (с помощью инструкций Dim, Private, Public или Static). Для типа Variant не определен символ описания типа.
Variant является особым типом данных. Переменные этого типа могут содержать любые данные, за исключением строк (тип String) фиксированной длины и определяемых пользователем типов. Переменная типа Variant может также содержать специальные значения Empty, Error, Nothing и Null. Указать характер подтипов типа Variant позволяют функции VarType или TypeName.

Допустимыми числовыми данными являются любые целые или действительные числа в диапазоне от -1,797693134862315E308 до -4,94066E-324 для отрицательных значений и от 4,94066E-324 до 1,797693134862315E308 для положительных значений. В общем случае, числовые данные типа Variant сохраняют свой исходный тип данных внутри типа Variant. Например, если присвоить переменной типа Variant значение типа Integer, то в последующих операциях Variant трактуется как Integer. Однако, если арифметическая операция, выполненная над переменной типа Variant, содержащей значение типа Byte, Integer, Long или Single, приводит к тому, что результат выходит за границы диапазона допустимых значений исходного типа, то результат преобразуется к следующему более широкому типу внутри типа Variant. Значение типа Byte преобразуется к типу Integer, Integer преобразуется к типу Long, а значения типа Long и Single преобразуются к типу Double. Ошибка возникает, если за пределы допустимого диапазона значений выходят переменные типа Variant, содержащие значения типа Currency, Decimal или Double.

Пользователь имеет возможность использовать тип Variant вместо любого типа данных, чтобы обеспечить большую гибкость при обработке данных. Если содержимым переменной типа Variant являются цифры, то в разном контексте они могут рассматриваться либо как строковое представление числа, либо как число. Например:

Dim MyVar As Variant
MyVar = 98052

В этом примере переменная MyVar содержит представление числового значения 98052. Арифметические операторы можно применять к значениям типа Variant, содержащим как числа, так и строковые значения, которые могут быть интерпретированы как числа. Если применить оператор + для сложения переменной MyVar с другой переменной типа Variant, содержащей число, или с переменной числового типа, то результатом будет арифметическая сумма.

Значение Empty определяет переменную типа Variant, которая не была инициализирована (не получила начальное значение). Переменная типа Variant, содержащая значение Empty, рассматривается как 0 в контексте математических операций и как пустая строка ("") в контексте операций со строковыми значениями.

Не следует путать значения Empty и Null. Null указывает, что переменная типа Variant имеет пустое значение в результате конкретных операций.

Для типа Variant значение Error является специальным значением, которое используется для указания возникновения условия ошибки в процедуре. Однако в отличие от других типов ошибок при этом не происходит нормальной обработки ошибок на уровне приложения. Это позволяет пользователю или приложению выбрать несколько альтернативных действий на основании значения ошибки. Значения Error создаются путем преобразования действительных чисел в значения ошибки с помощью функции CVErr.
13 фев 07, 16:24    [3779106]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Restavraciya
Member [заблокирован]

Откуда:
Сообщений: 5139
Ничего не понял из вашего объяснения.
При чем здесь user_id() когда речь идет о строковой переменной которая нужна только для того чтобы передать свое значение другой строковой (в данном случае свойству RecordSource)
Повторю вопрос - зачем нужны скобки (1024) и что такое 1024 ?
13 фев 07, 16:25    [3779112]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
bgn
Member

Откуда:
Сообщений: 243
там опечатка нужно Dim s As String * 10, а не Dim s*10
13 фев 07, 16:26    [3779118]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
не догоняю
Guest
Присоединяюсь к мемберу Restavraciya.
Моя проверка
Sub TestString()
    Dim ww As String
    Dim intNum As Integer
    Dim strQuery As String
   


    strQuery = "SELECT *,dbo.GetPgs4Daily(FileID) AS Pages,dbo.fGT(FileID) AS Tr,dbo.fGE(FileID)as Ed " & _
        "FROM tTranslations " & _
        "WHERE year(datereceived)=year(getdate())and datepart(" & ww & ",DateDelivery)=" & intNum & " and datepart(" & ww & ",DateReceived)<=" & _
        intNum & " or datedelivery is null"
    strQuery = strQuery + strQuery
    Debug.Print strQuery
    
    MsgBox Len(strQuery)
End Sub
13 фев 07, 16:28    [3779134]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
Restavraciya
Ничего не понял из вашего объяснения.
При чем здесь user_id() когда речь идет о строковой переменной которая нужна только для того чтобы передать свое значение другой строковой (в данном случае свойству RecordSource)
Повторю вопрос - зачем нужны скобки (1024) и что такое 1024 ?


Прошу прощения, я неправильно понял вопрос.

(1024) - это случайно закравшаяся ошибка. одна из попыток объявить эту переменную, навроде того что рекомендует bgn
bgn
Dim s*10 'строка из 10 символоФ
.

Правда это у меня тоже не компилируется - выделяет звездочку и говорит "Expected: end of statement"(((
13 фев 07, 16:32    [3779158]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
bgn
Member

Откуда:
Сообщений: 243
bgn
там опечатка нужно Dim s As String * 10, а не Dim s*10
13 фев 07, 16:32    [3779166]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
bgn
там опечатка нужно Dim s As String * 10, а не Dim s*10

Написал
    Dim strQuery As String * 1024
Переменная все равно 255 знаков
13 фев 07, 16:35    [3779183]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Restavraciya
Member [заблокирован]

Откуда:
Сообщений: 5139
(Бредовая идея)
Может быть у вас тип STRING гдето глобально переопределен ?
13 фев 07, 16:42    [3779245]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
Restavraciya
(Бредовая идея)
Может быть у вас тип STRING гдето глобально переопределен ?


не, у меня бы мозгов на это не хватило))) я даже не знаю, что это такое
13 фев 07, 16:43    [3779253]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
natalitvinenko
Member

Откуда: Донецк
Сообщений: 696
У меня такой глюк был. Собирался запрос по частям, анализировались контролы...
Преодолеваю так:
    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim Otdel As String, cly As String, pre As String
    Dim gorod As String, mar As String, gonomer As String
    Dim cer As String, kyz As String, Inspektor As String, nomerdvi As String
    .......

    If Отделение = 1 Or ФлажокF Then Otdel = "" Else Otdel = "[Авто].[Отделение]=" & Me![Отделение] & " and "
    If Служба = 1 Or ФлажокF Then cly = "" Else cly = "[Авто].[Служба]=" & Me![Служба] & " and "
    If Пред = 1 Or ФлажокF Then pre = "" Else pre = "[Авто].[Предприятие]=" & Me![Пред] & " and "
    'If ПолеСоСписком35 = 1 Then gorod = "" Else gorod = "[Город]=" & Me![ПолеСоСписком35]
    If Город = 1 Or ФлажокF Then gorod = "" Else gorod = "[Авто].[Город]=" & Me![Город] & " and "
    
    stLinkCriteria = Otdel & cly & pre & gorod & mar & Goz1 & gonomer & cer
    stLinkCriteria = stLinkCriteria & kyz & Inspektor & nomerdvi & nomershi
    stLinkCriteria = stLinkCriteria & nomerkyz & gorodpri & tex & cpic & naz & Oblast1 & Top1 & GAI1
    stLinkCriteria = stLinkCriteria & tip & NewTip & yearspi & IzInDoroga1 & mesta & Yearr & yearEnter & yearCorrect & beg & pri1 & NVSB1 & " 1=1 "
    

Так все работает. Почему - не знаю. A97 Win 98
13 фев 07, 16:57    [3779374]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
natalitvinenko
Так все работает. Почему - не знаю. A97 Win 98


А при занесении в конечную переменную разве не обрезает? у меня как раз это и случается(((
13 фев 07, 17:09    [3779479]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
4321
Member [заблокирован]

Откуда:
Сообщений: 3573
sunnya
Когда добавляю ещё проверку одного параметра:
 
последние скобки у меня уже не помещаются

а чем вы меряли помесщяемость?
не прислоните измеритель к экрану?
а то ить мне тут не видно.


и вобше давно высказано предположение о наличии на форме текстового поля с именем strQuery, а вы его даже не прокомментировали
13 фев 07, 17:15    [3779544]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
4321
sunnya
Когда добавляю ещё проверку одного параметра:
 
последние скобки у меня уже не помещаются

а чем вы меряли помесщяемость?
не прислоните измеритель к экрану?
а то ить мне тут не видно.


MS Word word count.


4321
и вобше давно высказано предположение о наличии на форме текстового поля с именем strQuery, а вы его даже не прокомментировали


Restavraciya
Если эта "переменная" - текстовое поле формы связанное с полем текстого типа источника данных таблица, то руки прямые :-)



смотрите третье сообщение в топике, там отрицается наличие текстбоксов на форме в принципе
13 фев 07, 17:25    [3779649]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
тогда...
Guest
Можно увидеть исправленный код (который по крайней мере компилируется)?
13 фев 07, 17:30    [3779687]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
natalitvinenko
Member

Откуда: Донецк
Сообщений: 696
sunnya

А при занесении в конечную переменную разве не обрезает? у меня как раз это и случается(((

Нет! В том то и дело, что при сборе не в одну переменную - не обрезает. Я по молодости сделала так, как указала, а потом решила переделать, как надо, по - правильному, то есть как у Вас. И немедленно всплыла ошибка, о которой вы говорите. Открутила назад.
13 фев 07, 17:31    [3779696]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
тогда...
Можно увидеть исправленный код (который по крайней мере компилируется)?


Dim stDocName As String
    Dim strQuery As String * 1024
    Dim strQ1
    Dim ww As String
    Dim intNum As Integer
    
    strQ1 = ""
    
    If Forms!ChoosePeriod.Frame = 0 Then ww = "m" Else: ww = "ww"
    intNum = Forms.ChoosePeriod.Combo_dates


    strQuery = "SELECT *,dbo.GetPgs4Daily(FileID) AS Pages,dbo.fGT(FileID) AS Tr,dbo.fGE(FileID)as Ed " & _
        "FROM tTranslations " & _
        "WHERE (year(datereceived)=year(getdate())and datepart(" & ww & ",DateDelivery)=" & intNum & " and datepart(" & ww & ",DateReceived)<=" & _
        intNum & " or datedelivery is null)"
        
        If Forms!ChoosePeriod.CheckMy = -1 Then strQ1 = " and Manager=User_id()"
        
    Reports!WM.RecordSource = strQuery & strQ1
13 фев 07, 17:31    [3779697]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
все работает как положено
Guest
Работает. Закомментарил
'If Forms!ChoosePeriod.Frame = 0 Then ww = "m" Else: ww = "ww"
'intNum = Forms.ChoosePeriod.Combo_dates

и убрал
If Forms!ChoosePeriod.CheckMy = -1 Then strQ1 = " and Manager=User_id()"

Reports!WM.RecordSource = strQuery & strQ1
Sub TestString2()
Dim stDocName As String
    Dim strQuery As String * 1024
    Dim strQ1
    Dim ww As String
    Dim intNum As Integer
    
    strQ1 = ""
    
    'If Forms!ChoosePeriod.Frame = 0 Then ww = "m" Else: ww = "ww"
    'intNum = Forms.ChoosePeriod.Combo_dates


    strQuery = "SELECT *,dbo.GetPgs4Daily(FileID) AS Pages,dbo.fGT(FileID) AS Tr,dbo.fGE(FileID)as Ed " & _
        "FROM tTranslations " & _
        "WHERE (year(datereceived)=year(getdate())and datepart(" & ww & ",DateDelivery)=" & intNum & " and datepart(" & ww & ",DateReceived)<=" & _
        intNum & " or datedelivery is null)"
        
    Debug.Print strQuery
    
    MsgBox Len(strQuery)

End Sub
13 фев 07, 17:36    [3779727]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
все работает как положено
Работает.


Вот, а у меня получается, что эта строка (strQuery) все равно не больше 255 знаков
13 фев 07, 17:39    [3779760]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
4321
Member [заблокирован]

Откуда:
Сообщений: 3573
sunnya
MS Word word count.
Ы??????????????????

а отладчики или ошибки уже не в моде?


sunnya
смотрите третье сообщение в топике, там отрицается наличие текстбоксов на форме в принципе
посморел. нашел только:
sunnya
Нет, все идет только из кода:
что совершенно не отрицает наличия/присуйствия. и вообще многого чего прочего...

покажите куда вы в коде пытаетесь запхнуть вашу строку, и где в коде она не пролазит, и, самое главное - покажите как она у вас не пролазит (т.е. таки прислоните этим боком к экрану)
13 фев 07, 17:40    [3779764]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
natalitvinenko
Member

Откуда: Донецк
Сообщений: 696
И еще - не нервничайте, а попробуйте запустить код утром. Может внезапно заработать. Бывало.
13 фев 07, 17:50    [3779858]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
4321
sunnya
MS Word word count.
Ы??????????????????

а отладчики или ошибки уже не в моде?

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

Простите, если я что-то не так говорю, я совершенно не специалист в данном вопросе, но руководство так не считает :(
13 фев 07, 18:05    [3779957]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
4321
покажите куда вы в коде пытаетесь запхнуть вашу строку, и где в коде она не пролазит, и, самое главное - покажите как она у вас не пролазит (т.е. таки прислоните этим боком к экрану)


    Dim stDocName As String
    Dim strQuery As String * 1024
    Dim ww As String
    Dim intNum As Integer

    If Forms!ChoosePeriod.Frame = 0 Then ww = "m" Else: ww = "ww"
    intNum = Forms.ChoosePeriod.Combo_dates


    strQuery = "SELECT *,dbo.GetPgs4Daily(FileID) AS Pages,dbo.fGT(FileID) AS Tr,dbo.fGE(FileID)as Ed " & _
        "FROM tTranslations " & _
        "WHERE (year(datereceived)=year(getdate())and datepart(" & ww & ",DateDelivery)=" & intNum & " and datepart(" & ww & ",DateReceived)<=" & _
        intNum & " or datedelivery is null)"
        
        If Forms!ChoosePeriod.CheckMy = -1 Then strQuery = strQuery & " and Manager=User_id()"
        
    Forms!WM.RecordSource = strQuery & strQ1
После выполнения этого кода (при checkmy = -1) в переменной сохраняется строка:
"SELECT *,dbo.GetPgs4Daily(FileID) AS Pages,dbo.fGT(FileID) AS Tr,dbo.fGE(FileID)as Ed FROM tTranslations WHERE (year(datereceived)=year(getdate())and datepart(ww,DateDelivery)=7 and datepart(ww,DateReceived)<=7 or datedelivery is null) and manager=User"
13 фев 07, 18:14    [3780016]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
4321
Member [заблокирован]

Откуда:
Сообщений: 3573
sunnya
После выполнения этого кода (при checkmy = -1) в переменной сохраняется строка:
исчо раз: как вы об этом узнаетет?

вставьте предложенное выше
    Debug.Print strQuery
MsgBox Len(strQuery)
и продемонстрируйте ответы.
13 фев 07, 18:27    [3780083]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
4321
sunnya
После выполнения этого кода (при checkmy = -1) в переменной сохраняется строка:
исчо раз: как вы об этом узнаетет?

вставьте предложенное выше
    Debug.Print strQuery
MsgBox Len(strQuery)
и продемонстрируйте ответы.


Собственно говоря оттуда я это и копировал прежде. Но сейчас почему-то заработало, хотя я ничего не менял... Руки кривые, видимо
13 фев 07, 18:30    [3780108]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
миф о кривых руках
Guest
sunnya
4321
sunnya
После выполнения этого кода (при checkmy = -1) в переменной сохраняется строка:
исчо раз: как вы об этом узнаетет?

вставьте предложенное выше
    Debug.Print strQuery
MsgBox Len(strQuery)
и продемонстрируйте ответы.


Собственно говоря оттуда я это и копировал прежде. Но сейчас почему-то заработало, хотя я ничего не менял... Руки кривые, видимо

Это отмазка... :-)
Просто нужно быть внимательнее - и внимательно читать вопросы и ответы, которые Вам дают.
13 фев 07, 18:34    [3780136]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
sunnya
Member

Откуда:
Сообщений: 27
миф о кривых руках
Это отмазка... :-)
Просто нужно быть внимательнее - и внимательно читать вопросы и ответы, которые Вам дают.


Кривые руки - имхо не умение проверять себя и слушать других.

Не подскажете, с чем могла быть связана там ошибка и почему когда я объявлял переменную просто "Dim strQuery as String" ее длина была только 255 знаков?

Можно ли объявить что-то вроде varchar?
13 фев 07, 18:39    [3780170]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Joss
Member

Откуда: г. Минск
Сообщений: 3857
sunnya
Не подскажете, с чем могла быть связана там ошибка и почему когда я объявлял переменную просто "Dim strQuery as String" ее длина была только 255 знаков?

Можно ли объявить что-то вроде varchar?
Ну нету в VBA типа varchar! А 255 знаков, это где-то, что-то Вы не так делаете. Мне пришлось как-то в программе на Access считывать данные из СОМ-порта в переменную String, так 32К она втягивала спокойно. Ну выложите кусочек Вашей базы, чтобы её пощупать. Чудес на свете практически не бывает.
14 фев 07, 10:24    [3782148]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
COP001
Member

Откуда: Ростов-на-Дону
Сообщений: 91
У меня было так: из кучи конотролов на форме нужно было собирать строку для инсерта, в том числе и выражения типа CONVERT(money, МоеЗначение) причем таких было несколько. При попытке отработать инсерт сообщение о неправильном SQL. В debug смотрю чему равна строка, которую я скармливаю DoCmd.RunSQL и получаю строку обрезанную после 255 знака. (Эту строку копи-пастил в WORD - в свойствах документа размер 255 символов.)
14 фев 07, 11:54    [3783007]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 12877
нет ограничения на строку, (для реальных использований, т.е. не для хранения в них книг)
есть при использовании длинных строк происходит обрезание при передачи содержимого этой строки ,но сама строка остаётся целой.
14 фев 07, 14:03    [3784270]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Иванцов Сергей
Member

Откуда:
Сообщений: 8
Запрос с группировкой обрезает строку до 255, если группировку убрать - строка не обрезается. Тупо, в лоб -собрал строку и закинул в таблицу в поле типо MEMO. Лежит там, пока не понадобиться. Окончательный запрос - без группировки, достает строку из таблицы - все работает. Имеется задача - полученный результат выгрузить в EXCEL. Тоже обрезает, поэтому -тупо в лоб, сначала в WORD, а затем из WORD - в EXCEL...
30 май 07, 15:29    [4205675]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
Press F1 to get Help
Guest
Типы данных и размеры полей
Тип данных «Поле MЕМО» используется для хранения более 255 знаков. В поле MЕМО может находится до 65 536 знаков. Для хранения форматированного текста или длинных документов вместо поля MЕМО создайте поле объекта OLE.
...
Можно отсортировать или сгруппировать текстовые поля и поля типа MEMO, но Microsoft Access использует только первые 255 знаков при сортировке и группировке поля MEMO.
1 июн 07, 15:33    [4219184]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: String длиннее 255 символов в VBA  [new]
PavelVX
Member

Откуда: Новосибирск
Сообщений: 206
Добрый день!
Займусь некрофилией :)
Офис 2010, ListBox.
В первой колонке название блока параметров, выводится на экран.
Во второй набор параметров. На экран не выводится.
Т.е. пользователь выбирает необходимый ему набор параметров и запускает выполнение.
С развитием системы длинна текста во второй колонке росла. И тут выяснилось, что есть ограничение в длину в 256 символов.

Т.е.
Dim str as String
str = "Параметр" & ";" & "ParametersLine ... "
msgbox len(str) 'выведет 635
me.myListBox.AddItem str
msgbox len(me.myListBox.Column(1, 0)) ' выведет 256

Подскажите, можно ли как-то обойти это ограничение?
18 апр 17, 08:56    [20409557]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
vmag
Member

Откуда: г. Одинцово
Сообщений: 2672
PavelVX
В первой колонке название блока параметров, выводится на экран.
Во второй набор параметров. На экран не выводится.


- Убрать вторую колонку от слова вообще...
- когда нужно получить значение, использовать DLookup
18 апр 17, 09:54    [20409738]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
PavelVX
Member

Откуда: Новосибирск
Сообщений: 206
Если бы можно было использовать таблички, то вопрос бы и не вставал.
Но в данном случае все формируется динамически под конкретного пользователя и конкретные условия.
Таблицу не задействовать :(
18 апр 17, 10:04    [20409764]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
vmag
Member

Откуда: г. Одинцово
Сообщений: 2672
PavelVX
Но в данном случае все формируется динамически под конкретного пользователя и конкретные условия.


Параллельно писать в текстовый массив и брать значение оттуда...
В списке:
0,1,2,3,... первый столбец - нумерация (скрытый), для выбора значения из списка...
Названия блока параметров - второй столбец (показываем)
В массиве:
m(i) - значение (набор параметров), соответствующий выбранному значению в списке.
18 апр 17, 10:13    [20409799]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
PavelVX
Member

Откуда: Новосибирск
Сообщений: 206
Спасибо!
Уже так и начал делать + изменяю размер массива :)
18 апр 17, 10:22    [20409820]     Ответить | Цитировать Сообщить модератору
 Re: String длиннее 255 символов в VBA  [new]
igor.kovalchuk
Member

Откуда:
Сообщений: 17
natalitvinenko,

Тип String в VBA может вмещать до 2 GB данных


string (пере­менной длины)
10 байт + длина строки
приблизительно 2 млрд символов


string (фикси­рованной длины)
Длина строки
65400 символов

http://math.csu.ru/~rusear/VBA/9_VarTypeConst.htm
22 сен 17, 09:41    [20814533]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Microsoft Access Ответить