На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> MSHFlexGrid и Mysql
    Загружаю данные в MSHFlexGrid с помощью MSHFlexGrid.DataSource, поля с типом данных в БД Mysql Decimal отображаются в MSHFlexGrid не такак в БД.
    Если в БД строка 0.20 в MSHFlexGrid отображается как .20
      Цитата valdemar_ru @
      Если в БД строка 0.20 в MSHFlexGrid отображается как .20

      Если в БД действительно СТРОКА - значит, в свойствах флекса формат поля чисельный...
        Цитата Akina @
        Цитата valdemar_ru @
        Если в БД строка 0.20 в MSHFlexGrid отображается как .20

        Если в БД действительно СТРОКА - значит, в свойствах флекса формат поля чисельный...

        в БД тип поля Decimal. В MSHFlexGrid все по умолчанию. В MSHFlexGrid можно задать формат вывода данных?
          Выложи минимальный проект плюс минимальный скрипт для создания и наполнения MySQL-БД (или минимальный дамп) - потестировать.
          Уж больно странно... по-моему, не в гриде дело.
            Цитата Akina @
            Выложи минимальный проект плюс минимальный скрипт для создания и наполнения MySQL-БД (или минимальный дамп) - потестировать.
            Уж больно странно... по-моему, не в гриде дело.

            дамп таблицы. Поле KOL_UPAK
            Сообщение отредактировано: valdemar_ru -

            Прикреплённый файлПрикреплённый файл123.rar (1,99 Кбайт, скачиваний: 166)
              Akina
              не получилось посмотреть ?
                valdemar_ru
                Akina обещал, значит сделает: 4 дня - не срок.
                Ты только топик не забывай поднимать апами.
                  valdemar_ru, я всё жду, когда Вы выполните ВСЮ просьбу, а не её кусочек, и выложите в дополнение к дампу минимальный проект, в котором проблема воспроизводится.
                    Цитата valdemar_ru @
                    Если в БД строка 0.20 в MSHFlexGrid отображается как .20

                    Нужно посмотреть на региональные стандарты, может у тебя ОС Английская, или настройки чисел по другому.
                      Цитата coder @
                      Цитата valdemar_ru @
                      Если в БД строка 0.20 в MSHFlexGrid отображается как .20

                      Нужно посмотреть на региональные стандарты, может у тебя ОС Английская, или настройки чисел по другому.

                      C:\Documents and Settings\Valdemar>systeminfo
                      Язык системы: ru;Русский
                      Язык ввода: en-us;Английский (США)
                      вот скрин региональных стандартов

                      Прикреплённая картинка
                      Прикреплённая картинка


                      Добавлено
                      Цитата Akina @
                      valdemar_ru, я всё жду, когда Вы выполните ВСЮ просьбу, а не её кусочек, и выложите в дополнение к дампу минимальный проект, в котором проблема воспроизводится.

                      Вот минимальный проект

                      Прикреплённый файлПрикреплённый файлTest1.rar (2,56 Кбайт, скачиваний: 183)
                      Сообщение отредактировано: valdemar_ru -
                        valdemar_ru, вынужден тебя огорчить - это не лечится.
                        Начальный ноль теряется в момент преобразования числа в текст на выходе из ODBC-драйвера. И это описано в документации:
                        Цитата
                        Rules for Conversions

                        [удалено]

                        Character Source to Numeric Target
                        Following are the rules for converting from a character source (CS) to a numeric target (NT):

                        1) Replace CS with the value obtained by removing any leading or trailing spaces in CS. If CS is not a valid numeric-literal, SQLSTATE 22018 (Invalid character value for cast specification) is returned.
                        2) Replace CS with the value obtained by removing leading zeroes before the decimal point, trailing zeroes after the decimal point, or both.
                        3) Convert CS to NT. If the conversion results in a loss of significant digits, SQLSTATE 22003 (Numeric value out of range) is returned. If the conversion results in the loss of nonsignificant digits, SQLSTATE 01S07 (Fractional truncation) is returned.

                        [удалено]

                        Самый простой имхо выход - создать в промежутке между приложением и табюлицей вьюшку, которая заменит тип этого поля с чисельного на текст:
                        ExpandedWrap disabled
                          CREATE OR REPLACE VIEW v_rezept
                          AS
                            SELECT ... , CAST(`kol_upak` AS CHAR) `kol_Upak`, ...
                            FROM rezept;

                        и получать данные для грида из вьюшки.
                          Akina
                          Спасибо.
                          Я сейчас так и делаю только без
                          ExpandedWrap disabled
                            CREATE OR REPLACE VIEW v_rezept
                          просто
                          ExpandedWrap disabled
                            SELECT ... , CAST(`kol_upak` AS CHAR) `kol_Upak`, ...
                            FROM rezept;


                          Я делал по инсрукции из этого источника http://azbukavb.narod.ru/teorie/MSHFlex1.html
                          пункт: Программное связывание данных с элементом управления Hierarchical FlexGrid
                          ExpandedWrap disabled
                            DIM Cn As New Connection, Rs As New Recordset
                             
                            ' Заменить <myDataSource> действительным DSN на вашей системе
                            Cn.ConnectionString = "DSN=<myDataSource>"
                             
                            ' Используйте следующий код для SHAPE Commands
                            Cn.Provider = "MSDataShape"
                            Cn.CursorLocation = adUseNone
                             
                            'Этот код для SQL Commands
                            Cn.CursorLocation = adUseNone
                            Cn.Open
                             
                            ' Необходимо задать правильный источник данных для используемого
                            ' набора Recordset для созданного выше Connection
                            Rs. Source = "<valid SQL SELECT command>"
                             
                            ' Теперь ассоциировать Command с Connection и выполнить их
                            Set Rs.ActiveConnection = Cn
                            Rs.Open
                             
                            Вставить следующий код для присваивания открытого набора Recordset в Rs элементу управления Hierarchical FlexGrid:
                             
                            Set MSHFlexGridI.DataSource = Rs

                          Мне не понятна эта строчка
                          ExpandedWrap disabled
                            Cn.Provider = "MSDataShape"
                          если ее закомментировать, то данные отображаются нармально с нулем. Я ее использовал в подключении.
                          ExpandedWrap disabled
                            Public conn As ADODB.Connection
                            Set conn = New ADODB.Connection
                               conn.ConnectionString = "DRIVER=" & "{MySQL ODBC 3.51 Driver}" & ";" & _
                                                   "SERVER=" & "localhost" & ";" & _
                                                   "DATABASE=" & "region" & ";" & _
                                                   "UID=" & "root" & ";" & _
                                                   "PASSWORD=" & "123" & ";" & _
                                                   "OPTION=" & "35" & ";"
                                conn.Provider = "MSDataShape"
                                conn.Open

                          И еще такой момент, если MSHFlexgrid заполнять через
                          ExpandedWrap disabled
                            MSHFlexGrid1.TextMatrix(0, 0)=recordset.Fields("index")

                          поля заполняются с форматирвоанием т.е. если БД идет 2010-08-08 в гриде 08.08.2010 или 0.60 а гриде 0,60.
                          Этот вариант не подходит правда, если надо заполнить более 2000 строк vb6 зависает.
                            valdemar_ru
                            Использование статического преобразующего запроса в коде лишает гибкости. Потому я этот самый очевидный вариант не указал.

                            Цитата valdemar_ru @
                            Мне не понятна эта строчка
                            ExpandedWrap disabled
                              Cn.Provider = "MSDataShape"

                            Это специальный СОМ-компонент-провайдер, позволяющий формировать и передавать в рекордсете иерархические данные. Иными словами, позволяющий формировать "рекордсет в рекордсете". В твоём случае он не нужен - у тебя данные планарные. Кстати, непонятно, почему ты использовал иерархический флекс, а не обычный... подробнее см. отсюда.
                              Akina
                              Цитата
                              Кстати, непонятно, почему ты использовал иерархический флекс, а не обычный

                              я в Vb не силен только учусь.
                              в описание написано он по функционалу побольше будет, поэтому и решил сразу изучать MSHFlexgrid.

                              если не указывать
                              ExpandedWrap disabled
                                conn.Provider = "MSDataShape"
                              , то MSHFlexgrid отображает 466 строк, а если оставить показывает все 40000 тыс строк.
                              Спасибо за помощь буду дальше разбираться
                              Сообщение отредактировано: valdemar_ru -
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0526 ]   [ 20 queries used ]   [ Generated: 23.04.24, 08:58 GMT ]