|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
||||||
Задать формат данных, полученных из БД05.04.2015, 02:50. Показов 2344. Ответов 10
Метки нет (Все метки)
Здравствуйте!
Запрашиваю из MS SQL данные и заполняю ими DataGridView. Столкнулся с неприятным поведением. Запрос группирует данные и отдаёт табличку с суммами (число с дробной частью) по каждой группе. Я эту табличку отдаю в DataGridView. Проблема в том, что, например, сумма равна 65, а в таблице может быть написано 64.99999999 или сумма равна 23.35, а выведет 23.3499999. Это проявляется не во всех строках. Подскажите, как мне или заставить SQL-код выдавать числа в формате "хх.ххх" или уже столбец в контролле выводиться в этом формате и не теряя значений? P.S. - я то понимаю, что плавающая точка и т.д., то заказчиков это пугает. Учитывая, что они туда вводили суммы денег (т.е. максимум было 2 числа после запятой, а в сумме дало много чисел там же). Благодарю за внимание! Добавлено через 16 минут Заметил ещё одну особенность. Выполняю этот же SQL-код, кладу результаты в тот же DataTable и просто вывожу оттуда значение этой ячейки со странным поведением.
0
|
||||||
| 05.04.2015, 02:50 | |
|
Ответы с готовыми решениями:
10
Задать стили для полученных данных из javaScript Задать формат ячеек Excel при выводе данных из DataGridView Как задать нужный формат вывода данных в log-файл? |
|
|
|
| 05.04.2015, 09:09 | |
|
body90, в базе данных используется тип Decimal? Если нет, то используйте именно его, он специально предназначен для денежных сумм.
1
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
|
| 06.04.2015, 02:47 [ТС] | |
|
insite2012, нет. Используется Float. Данная база уже находится в эксплуатации. Я лишь доделываю некоторые отчёты. Не уверен, что можно менять тип столбца в уже доаольно заполненной базе.
Не понимаю, почему именно DataGridView так коверкает вывод числа. Ведь в отладчике или просто выводя значение в MessageBox всё отображается корректно. Ещё странно то, что это несёт не постоянный характор. В одном и том же столбце некоторые значения выведены вот так искорёжены, но большинство отображаются в полном порядке и так, как от них ожидается.
0
|
|
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
||||||||||||
| 06.04.2015, 05:22 | ||||||||||||
1
|
||||||||||||
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
||
| 07.04.2015, 03:03 [ТС] | ||
|
0
|
||
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
|
| 07.04.2015, 03:46 | |
|
body90, Вам никто не мешает развернуть резервную копию базы данных, изменить тип там, проверить работоспособность вашего отчета на копии и, после того, как убедитесь в безпасности, перенести решение на рабочую базу. В вашем случае (не более двух знаков после запятой) преобразование никаких негативных последствий вызвать не должно. Единственный нюанс, что во всех клиентских приложениях будет продолжать ожидаться значение данного столбца типа Float. Нужно будет, естественно, тоже исправлять.
1
|
|
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
||
| 07.04.2015, 04:10 [ТС] | ||
|
kodv, а Money и Smallmoney в какой CLR-тип преобразовуется, когда я его вытащу из базы в переменную? Decimal?
А отчёты должны будут работать, т.к. при выходе с базы сразу прописаны явные преобразования типов. Небольшие значения, теоретически, должны спокойно преобразовываться из Decimal в Float-переменные. Но всё хорошо проверить всё равно стоит.
0
|
||
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
||||||||
| 07.04.2015, 04:20 | ||||||||
1
|
||||||||
|
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
|
||
| 07.04.2015, 04:46 [ТС] | ||
|
А tt.MyField <> t.MyField не в WHERE, разве, должно быть?
Добавлено через 9 минут Ещё сопутствующий вопрос. Используется бесплатная версия MSSQL, а она ограничена в размерах. По отдельности в ячейках лежат не большие значения (максимум 2-3 сотни), так что можно было бы использовать и Smallmoney. Но вот для статистики нужно получать суммы за разные промежутки. Ничего не будет, если сама сумма, подсчитанная запросом, превысит максимальное значение Smallmoney? Обратно в базу эта сумма писать не будет. Да и вообще, какой из двух типов посоветуете?
0
|
||
|
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
|
||||||||||
| 07.04.2015, 05:09 | ||||||||||
|
Добавлено через 14 минут
1
|
||||||||||
|
0 / 0 / 1
Регистрация: 09.09.2014
Сообщений: 30
|
|
| 29.07.2016, 15:25 | |
|
Столкнулся с похожей проблемой. Какого типа у вас переменная суммы? Если float, то замените ее на double.
Все дело в соответствии типов, читаем msdn: https://msdn.microsoft.com/ru-... .110).aspx float в SQL это double в .Net. Вам наверное уже не актуально, но может кому пригодиться.
0
|
|
| 29.07.2016, 15:25 | |
|
Помогаю со студенческими работами здесь
11
Задать для значения переменной формат и из введенных данных выделить часть Как задать формат Задать формат рисунка задать формат программно
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|