На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS

Дорогие друзья! Поздравляем вас с Новым 2018 годом!

Всем удачи, успеха и благополучия!
В новом году ожидаем новых рекордов при подсчёте количества ёлочек на экране ;)


msm.ru
Модераторы: maxim84_, juice
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Вывод в dataGrid миллионы строк, Результат SQL-запроса в dataGrid C# WPF
    извиняюсь ровно 50 строк выводит
      Цитата kms @
      извиняюсь ровно 50 строк выводит

      Причину понял?
        Цитата Олег М @
        Цитата kms @ 13 минут назад
        сделал все по Вашей схеме выводит 52 строки (всего 130) и останавливается

        Естественно. Вот это что - gStart * 50? Здесь надо просто gStart

        Добавлено 2 минуты назад
        Цитата Олег М @ 3 минуты назад
        char *p = bufOut; // указатель на буфер

        Это не нужно

        Добавлено 1 минуту назад
        Цитата kms @ 13 минут назад
        pRecSize * razPak

        Вместо этого поставь setRazBuf

        Добавлено 1 минуту назад
        И проверяй err


        все сделал , даже работать стало быстрей , до этого я успевал глазом моргнуть а сейчас не успеваю , класс

        Добавлено
        Цитата Олег М @
        Причину понял?

        да понял

        Добавлено
        теперьбы как бы эти пачки связать хоть даже в С++ со скролингом

        Добавлено
        а ну да вот Вы говорили еще можно в функцию вынести , точно
        щас попробую

        Добавлено
        Сделал по рабоче крестьянски
        ExpandedWrap disabled
          int FetchRecords(int pOper , hcSqlDstInfoT *infCol , unsigned pRecSize  , unsigned  cntOut, int pCol)
          {
              int err;
              int razPak = 50; // размер пачкиСтрок
           
              int setRazBuf = pRecSize * razPak; // устанавливаем размер буфера
           
              char *bufOut = new char[setRazBuf]; // делаем буфер размером на 1 пачку
           
              for (int gStart = 0; ; gStart += razPak) //  цикл по кол-ву пачек
              {
           
            if (err = hcSqlReadResults(pOper, gStart, bufOut, setRazBuf, &cntOut) != 0) break;//Чтение результатов
           
                  for (char *p = bufOut, *end = p + cntOut; p < end; )//  перебираем строки в пачке
                  {
                      for (int j = 0; j < pCol; j++) // перебираем  колонки
                      {
                          switch (infCol[j].type)
                          {
                       case HSCLI_ET_CHAR: { // 0 Массив символов длиной не более заданной
                       std::string s(p, infCol[j].len);      std::cout << s.c_str() << "  "; }
                                              break;
           
                          case HSCLI_ET_ARRA: // 1 Массив байтов заданной длины
                              std::cout << *reinterpret_cast<unsigned char *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_BYTE: // 2 Элемент - unsigned char (короткое целое)  short
                              std::cout << *reinterpret_cast<unsigned char *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_INTR: // 3 Элемент - signed short  
                              std::cout << *reinterpret_cast<signed short *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_WORD: // 4 Элемент - unsigned short  
                              std::cout << *reinterpret_cast<unsigned short *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_DATE: // 5 Дата    - unsigned short  
                              std::cout << *reinterpret_cast<unsigned short *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_NMBR: //6 Номер  - 3-х байтовое целое без знака  
                                // std::cout << *reinterpret_cast<  *>(p);
                              break;
           
                          case HSCLI_ET_LONG: //7 Элемент - long int
                              std::cout << *reinterpret_cast<long int *>(p) << "  ";
                              break;
           
                          case  HSCLI_ET_DWRD: // 8 Элемент - unsigned long int  в БД это dword          
                              std::cout << *reinterpret_cast<unsigned long int *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_FLOA: //  9  Элемент - float
                              std::cout << *reinterpret_cast<float *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_CURR: //  10 Деньги (double)  
                              std::cout << *reinterpret_cast<double *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_DFLT: // 11 Элемент - double  
                              std::cout << *reinterpret_cast<double *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_QINT: //  12 Элемент - signed __int64
                              std::cout << *reinterpret_cast<signed __int64 *>(p) << "  ";
                              break;
           
                          case HSCLI_ET_QWRD: //  13 Элемент - unsigned __int64
                              std::cout << *reinterpret_cast<unsigned __int64 *>(p) << "  ";
                              break;
                          }
                          p += infCol[j].len;
                      }
                      std::cout << std::endl;
                  }
           
                  if (cntOut < setRazBuf) break;
           
              }
            
              return 0;
          }


        ну зато хоть удобней смотреть
          Цитата kms @
          Сделал по рабоче крестьянски

          И что ты планируешь с ней делать? Тебе нужно чтобы она как-то данные возвращала, для последующей обработки.

          Цитата kms @

              char *bufOut = new char[setRazBuf]; // делаем буфер размером на 1 пачку

          Буфер ты так и не удаляешь
            Цитата Олег М @
            И что ты планируешь с ней делать? Тебе нужно чтобы она как-то данные возвращала, для последующей обработки.

            да , чето я уже загнался , сегодня уже спать хочу , завтрадоделаю отпишусь

            Добавлено
            Цитата Олег М @
            Буфер ты так и не удаляешь

            забыл , уже поправил
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script Execution time: 0,0853 ]   [ 18 queries used ]   [ Generated: 21.01.18, 19:02 GMT ]