Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Переопределить тип полей в заполненной базе данных .mdb (Как заменить тип полей без потери самих данных?)
Переопределить тип полей в заполненной базе данных .mdb
ВадимДата: Пн, 25 Июля 2011, 00:57 | Сообщение # 1
Генератор идей
Возможно ли программно, из проекта NB изменить (переопределить) тип полей в уже имеющейся заполненной базе данных .mdb ?

Допустим есть 10 полей, из них 5 полей типа string, a 5 полей типа float.
И задача - поменять float на string (для всей таблицы) без потери данных, т.е. всё остальное оставить как есть...


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
СообщениеВозможно ли программно, из проекта NB изменить (переопределить) тип полей в уже имеющейся заполненной базе данных .mdb ?

Допустим есть 10 полей, из них 5 полей типа string, a 5 полей типа float.
И задача - поменять float на string (для всей таблицы) без потери данных, т.е. всё остальное оставить как есть...

Автор - Вадим
Дата добавления - 25 Июля 2011 в 00:57
mishemДата: Пн, 25 Июля 2011, 01:08 | Сообщение # 2
Эксперт форума
Точно не буду утверждать. Но по моему нет.

Добавлено (25 Июль 2011, 01:08)
---------------------------------------------
Нет. Не возможно. Для того что бы поменять, нужно заново создать базу. Отсюда все данные потеряются. Но это ИМХО.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеТочно не буду утверждать. Но по моему нет.

Добавлено (25 Июль 2011, 01:08)
---------------------------------------------
Нет. Не возможно. Для того что бы поменять, нужно заново создать базу. Отсюда все данные потеряются. Но это ИМХО.


Автор - mishem
Дата добавления - 25 Июля 2011 в 01:08
ВадимДата: Пн, 25 Июля 2011, 01:09 | Сообщение # 3
Генератор идей
Вот и я пока не нашел...

Просто задумался, на случай возможного обновления программы - может потребоваться изменить структуру имеющихся баз данных (чтобы старые базы работали в новой версии программы).


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
СообщениеВот и я пока не нашел...

Просто задумался, на случай возможного обновления программы - может потребоваться изменить структуру имеющихся баз данных (чтобы старые базы работали в новой версии программы).

Автор - Вадим
Дата добавления - 25 Июля 2011 в 01:09
mishemДата: Пн, 25 Июля 2011, 01:10 | Сообщение # 4
Эксперт форума
Хотя, можно пойти другим путем. Экспортируешь свою базу, создаешь новую с новым типом. И импортируешь в новую базу данные. Заменяешь файл, и ву аля. ;)

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеХотя, можно пойти другим путем. Экспортируешь свою базу, создаешь новую с новым типом. И импортируешь в новую базу данные. Заменяешь файл, и ву аля. ;)

Автор - mishem
Дата добавления - 25 Июля 2011 в 01:10
ВадимДата: Пн, 25 Июля 2011, 01:14 | Сообщение # 5
Генератор идей
Quote (mishem)
Хотя, можно пойти другим путем.

Да, тоже думал о том, что можно просто данные перенести в новый файл.
Однако еще не пробовал этот вариант.
Вдруг есть способ просто переопределить поля? Ведь есть команда позволяющая получить определения полей, в т.ч. тип данных (dbpGetFieldDefs).


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
Сообщение
Quote (mishem)
Хотя, можно пойти другим путем.

Да, тоже думал о том, что можно просто данные перенести в новый файл.
Однако еще не пробовал этот вариант.
Вдруг есть способ просто переопределить поля? Ведь есть команда позволяющая получить определения полей, в т.ч. тип данных (dbpGetFieldDefs).

Автор - Вадим
Дата добавления - 25 Июля 2011 в 01:14
mishemДата: Пн, 25 Июля 2011, 01:23 | Сообщение # 6
Эксперт форума
Quote (Вадим)
Вдруг есть способ просто переопределить поля?

Переопределить, нет. Как ты себе это представляешь? Ты сидишь в жигулях, надо что бы жигули превратились в волгу не затронув тебя. Тебя надо от туда вынуть, сделать волгу и посадить в нее тебя. :D Можно скопировать содержимое поля в переменную, создать новое поле, вставить данные из переменной в новое поле, а старое удалить. Можно так, что бы не трогать всю базу. Будет быстрее.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Вадим)
Вдруг есть способ просто переопределить поля?

Переопределить, нет. Как ты себе это представляешь? Ты сидишь в жигулях, надо что бы жигули превратились в волгу не затронув тебя. Тебя надо от туда вынуть, сделать волгу и посадить в нее тебя. :D Можно скопировать содержимое поля в переменную, создать новое поле, вставить данные из переменной в новое поле, а старое удалить. Можно так, что бы не трогать всю базу. Будет быстрее.

Автор - mishem
Дата добавления - 25 Июля 2011 в 01:23
ВадимДата: Пн, 25 Июля 2011, 01:31 | Сообщение # 7
Генератор идей
Quote (mishem)
Как ты себе это представляешь?

Тип поля - это же просто метаданные, если я правильно понимаю. Перезаписать эти данные и всё. Я файл базы открыл через MS Access и там просто у каждого поля есть (в режиме конструктора) есть выпадающий список - вместо "числовой" выбрал "текстовый" и всё...
Т.е. в файле .mdb где-то пишется для каждого поля свой тип.

У меня в проге сначала использовались разные типы данных, но когда я стал делать многосоставные фильтры (составные поисковые запросы), то обнаружилось, что автоматический поиск по базе, если встречаются разные типы данных - останавливается (правда, эту трудность можно обойти с помощью LIKE, но ... , короче проще оказалось типы поменять на одинаковые).


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
Сообщение
Quote (mishem)
Как ты себе это представляешь?

Тип поля - это же просто метаданные, если я правильно понимаю. Перезаписать эти данные и всё. Я файл базы открыл через MS Access и там просто у каждого поля есть (в режиме конструктора) есть выпадающий список - вместо "числовой" выбрал "текстовый" и всё...
Т.е. в файле .mdb где-то пишется для каждого поля свой тип.

У меня в проге сначала использовались разные типы данных, но когда я стал делать многосоставные фильтры (составные поисковые запросы), то обнаружилось, что автоматический поиск по базе, если встречаются разные типы данных - останавливается (правда, эту трудность можно обойти с помощью LIKE, но ... , короче проще оказалось типы поменять на одинаковые).

Автор - Вадим
Дата добавления - 25 Июля 2011 в 01:31
mishemДата: Пн, 25 Июля 2011, 01:35 | Сообщение # 8
Эксперт форума
Вадим, я чисто теоретически рассуждаю. Может кто пограмотней подскажет.

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеВадим, я чисто теоретически рассуждаю. Может кто пограмотней подскажет.

Автор - mishem
Дата добавления - 25 Июля 2011 в 01:35
СергейДата: Сб, 05 Ноября 2011, 10:56 | Сообщение # 9
Необукер
Вопрос про тип полей, кто работал с NeoBookDBPro отпишитесь
Дело в чем, понадобилось использовать числовые данные с разрядам после запятой (ХХХ,ХХ). Если присваиваю тип Integer, то идет округление, если тип Float, то после занесения данных получается такая хрень- в место 1,97 записывает 1,97000002861023
Нет в NeoBookDBPro типа ratio или что нить связаного с дробью :(
Прикрепления: 3390312.jpg(26.7 Kb)


Сообщение отредактировано
Сергей - Сб, 05 Ноября 2011, 10:59
 
СообщениеВопрос про тип полей, кто работал с NeoBookDBPro отпишитесь
Дело в чем, понадобилось использовать числовые данные с разрядам после запятой (ХХХ,ХХ). Если присваиваю тип Integer, то идет округление, если тип Float, то после занесения данных получается такая хрень- в место 1,97 записывает 1,97000002861023
Нет в NeoBookDBPro типа ratio или что нить связаного с дробью :(

Автор - Сергей
Дата добавления - 05 Ноября 2011 в 10:56
mishemДата: Сб, 05 Ноября 2011, 11:35 | Сообщение # 10
Эксперт форума
Сергей, а Currency не пробовал?

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеСергей, а Currency не пробовал?

Автор - mishem
Дата добавления - 05 Ноября 2011 в 11:35
СергейДата: Сб, 05 Ноября 2011, 12:13 | Сообщение # 11
Необукер
Quote (mishem)
Currency
не подходит, в мс автоматом приписывается символ валюты, в моем случае р. так 1,97р. в место 1,97


Сообщение отредактировано
Сергей - Сб, 05 Ноября 2011, 12:14
 
Сообщение
Quote (mishem)
Currency
не подходит, в мс автоматом приписывается символ валюты, в моем случае р. так 1,97р. в место 1,97

Автор - Сергей
Дата добавления - 05 Ноября 2011 в 12:13
mishemДата: Сб, 05 Ноября 2011, 12:21 | Сообщение # 12
Эксперт форума
А ты данные в базу вводишь через текстовое поле? Мож там преобразовывать до сотых?

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеА ты данные в базу вводишь через текстовое поле? Мож там преобразовывать до сотых?

Автор - mishem
Дата добавления - 05 Ноября 2011 в 12:21
Alex3AДата: Сб, 05 Ноября 2011, 13:40 | Сообщение # 13
Друг клуба ММВ
В каждой базе при любых преодбазованиях есть свои ньюансы, типы полей можно менять, но учитавая конкретные правила для каждого движка.
Так аксессс имеет свои правила.
Вадим, ну а для манипуляций с модернизациями базы, просто нуна организовать в ней табличку с полем в каторам будет хранится версия базы данных, тады ты будеш знать что и куды преобразовывать.

Добавлено (05 Ноябрь 2011, 13:40)
---------------------------------------------
И ваще то в любой базе мона узнать и тип и размер поля Ыщите.

 
СообщениеВ каждой базе при любых преодбазованиях есть свои ньюансы, типы полей можно менять, но учитавая конкретные правила для каждого движка.
Так аксессс имеет свои правила.
Вадим, ну а для манипуляций с модернизациями базы, просто нуна организовать в ней табличку с полем в каторам будет хранится версия базы данных, тады ты будеш знать что и куды преобразовывать.

Добавлено (05 Ноябрь 2011, 13:40)
---------------------------------------------
И ваще то в любой базе мона узнать и тип и размер поля Ыщите.


Автор - Alex3A
Дата добавления - 05 Ноября 2011 в 13:40
ВадимДата: Сб, 05 Ноября 2011, 15:02 | Сообщение # 14
Генератор идей
Quote (Alex3A)
Так аксессс

Quote (Alex3A)
для манипуляций с модернизациями базы, просто нуна организовать в ней табличку с полем в каторам будет хранится версия базы данных

Alex3A, спасибо, пригодится! Пока эта потребность отпала, но, полагаю, лишь на время... Все равно придется рано или поздно программно типы полей менять.

Quote (Сергей)
если тип Float, то после занесения данных получается такая хрень- в место 1,97 записывает 1,97000002861023

Сергей, ты заносишь в поле результат вычислений (например, переменную с результатом после математических вычислений) или просто 1,97? Как получается эта цифра 1,97? Надо понять, от куда берутся остальные цифры...


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win

Сообщение отредактировано
Вадим - Сб, 05 Ноября 2011, 15:03
 
Сообщение
Quote (Alex3A)
Так аксессс

Quote (Alex3A)
для манипуляций с модернизациями базы, просто нуна организовать в ней табличку с полем в каторам будет хранится версия базы данных

Alex3A, спасибо, пригодится! Пока эта потребность отпала, но, полагаю, лишь на время... Все равно придется рано или поздно программно типы полей менять.

Quote (Сергей)
если тип Float, то после занесения данных получается такая хрень- в место 1,97 записывает 1,97000002861023

Сергей, ты заносишь в поле результат вычислений (например, переменную с результатом после математических вычислений) или просто 1,97? Как получается эта цифра 1,97? Надо понять, от куда берутся остальные цифры...

Автор - Вадим
Дата добавления - 05 Ноября 2011 в 15:02
Alex3AДата: Сб, 05 Ноября 2011, 15:26 | Сообщение # 15
Друг клуба ММВ
Quote (Вадим)
Сергей, ты заносишь в поле результат вычислений (например, переменную с результатом после математических вычислений) или просто 1,97? Как получается эта цифра 1,97? Надо понять, от куда берутся остальные цифры...

Так это нормальна. :D
Quote
Для выполнения сложных расчетов с дробными числами в программах зачастую используются числа, представленные в экспоненциальном виде (в формате с плавающей запятой). Для микроконтроллеров наиболее распространненым является формат float — 32х битных дробных чисел, также называемых числами одинарной точности.

В этом формате 1 бит отводится на хранение знака числа, 8 бит — на хранение экспоненты числа и 23 бита — на хранение дробной части числа.


1,97 это не число, хранимое в памяти, а символьное его отражение текст.
Само число, хранится в памяти в вышеуказанном формате и его текстовое отображение может быть разным при разных форматах хранения, то есть дробная часть может быть разной, в зависимости от вычислительных ресурсов.
Quote
Классы чисел с плавающей запятой
Все возможные вариации записи чисел с плавающей запятой разделены на ряд классов.

Нулевые значения
Нормализованные числа
Денормализованные числа
Бесконечности
NaN (Not A Number — не число)
Числа в виде NaN используются для представления исключительных случаев, таких как значение квадратного корня из отрицательного числа.
Каждый класс определяется тем, какие значения имеют экспонента и дробная часть.

Класс Экспонента Дробная часть

Нуль 0 0
Денормализованные числа 0 не ноль
Нормализованные числа 1-254 любые значения
Бесконечность 255 0
NaN (не число) 255 не ноль

Наиболее распространены нормализованные числа. Нормализованные дробные числа записываются в следующей форме:

(-1)s · m · 2e
Здесь:

s — знак числа (0 — число положительное, 1 — отрицательное);
m — мантисса (1 <= m < 2);
e — экспонента.
В числе хранится дробная часть мантиссы Fract, т.е. мантисса

m = 1,Fract

В числе хранится значение экспоненты Exp, смещенное на 127, т.е.

e = Exp - 127

Денормализованные числа записываются в аналогичной форме, только у них всегда экспонета e равна -126 и мантисса m равна 0,Fract.

Примечание: –126 это наименьшее возможное значение экспоненты для нормализованных чисел.
Числа в нормализированном виде могут представлять значения из диапазона абсолютных значений от 1 · 10−38 до 1 · 1038. Числа в денормализированном виде могут представлять значения из диапазона абсолютных значений от 1 · 10−45 до 1 · 10−38.

Из приведенной выше записи чисел следует, что имеется два нуля +0 (когда s=0) и −0 (когда s=1), а также две бесконечности +∞ (когда s=0) и −∞ (когда s=1).

Добавлено (05 Ноябрь 2011, 15:26)
---------------------------------------------
Для так скать визуализации числа типа флоат существует хвункции к примеру formatfloat в васике, там указывается скока знакофф после запятой выводить.

 
Сообщение
Quote (Вадим)
Сергей, ты заносишь в поле результат вычислений (например, переменную с результатом после математических вычислений) или просто 1,97? Как получается эта цифра 1,97? Надо понять, от куда берутся остальные цифры...

Так это нормальна. :D
Quote
Для выполнения сложных расчетов с дробными числами в программах зачастую используются числа, представленные в экспоненциальном виде (в формате с плавающей запятой). Для микроконтроллеров наиболее распространненым является формат float — 32х битных дробных чисел, также называемых числами одинарной точности.

В этом формате 1 бит отводится на хранение знака числа, 8 бит — на хранение экспоненты числа и 23 бита — на хранение дробной части числа.


1,97 это не число, хранимое в памяти, а символьное его отражение текст.
Само число, хранится в памяти в вышеуказанном формате и его текстовое отображение может быть разным при разных форматах хранения, то есть дробная часть может быть разной, в зависимости от вычислительных ресурсов.
Quote
Классы чисел с плавающей запятой
Все возможные вариации записи чисел с плавающей запятой разделены на ряд классов.

Нулевые значения
Нормализованные числа
Денормализованные числа
Бесконечности
NaN (Not A Number — не число)
Числа в виде NaN используются для представления исключительных случаев, таких как значение квадратного корня из отрицательного числа.
Каждый класс определяется тем, какие значения имеют экспонента и дробная часть.

Класс Экспонента Дробная часть

Нуль 0 0
Денормализованные числа 0 не ноль
Нормализованные числа 1-254 любые значения
Бесконечность 255 0
NaN (не число) 255 не ноль

Наиболее распространены нормализованные числа. Нормализованные дробные числа записываются в следующей форме:

(-1)s · m · 2e
Здесь:

s — знак числа (0 — число положительное, 1 — отрицательное);
m — мантисса (1 <= m < 2);
e — экспонента.
В числе хранится дробная часть мантиссы Fract, т.е. мантисса

m = 1,Fract

В числе хранится значение экспоненты Exp, смещенное на 127, т.е.

e = Exp - 127

Денормализованные числа записываются в аналогичной форме, только у них всегда экспонета e равна -126 и мантисса m равна 0,Fract.

Примечание: –126 это наименьшее возможное значение экспоненты для нормализованных чисел.
Числа в нормализированном виде могут представлять значения из диапазона абсолютных значений от 1 · 10−38 до 1 · 1038. Числа в денормализированном виде могут представлять значения из диапазона абсолютных значений от 1 · 10−45 до 1 · 10−38.

Из приведенной выше записи чисел следует, что имеется два нуля +0 (когда s=0) и −0 (когда s=1), а также две бесконечности +∞ (когда s=0) и −∞ (когда s=1).

Добавлено (05 Ноябрь 2011, 15:26)
---------------------------------------------
Для так скать визуализации числа типа флоат существует хвункции к примеру formatfloat в васике, там указывается скока знакофф после запятой выводить.


Автор - Alex3A
Дата добавления - 05 Ноября 2011 в 15:26
ВадимДата: Сб, 05 Ноября 2011, 15:33 | Сообщение # 16
Генератор идей
Quote (Alex3A)
1,97 это не число, хранимое в памяти, а символьное его отражение текст.
Прикольно. Так и до квантовой механики не далеко... Квантовый скачок: где 7 переходит в 8 ?... :D

Quote (Alex3A)
formatfloat в васике, там указывается скока знакофф после запятой выводить.
Ну, вот и решение для Сергея.


Бесплатный онлайн курс программирования в NeoBook \ VisualNEO Win
 
Сообщение
Quote (Alex3A)
1,97 это не число, хранимое в памяти, а символьное его отражение текст.
Прикольно. Так и до квантовой механики не далеко... Квантовый скачок: где 7 переходит в 8 ?... :D

Quote (Alex3A)
formatfloat в васике, там указывается скока знакофф после запятой выводить.
Ну, вот и решение для Сергея.

Автор - Вадим
Дата добавления - 05 Ноября 2011 в 15:33
СергейДата: Сб, 05 Ноября 2011, 17:56 | Сообщение # 17
Необукер
Quote (mishem)
А ты данные в базу вводишь через текстовое поле?
нет. Они вводились путем мат. действий в самом запросе. Но делал и через НБ, тоже самое
Получается так field1[-/*]field2=field3, где field поля в бд
Quote (Вадим)
Сергей, ты заносишь в поле результат вычислений
да. В функции match разрядность по боку, там хоть 0 ставь, хоть 2, все равно результат такой же, т.е. дело не в НБ, а в типе. Таблица создается динамически, потому в ручную править нет возможности. А в плаге всего два типа Integer и Float. :(
Придется приводить их к типу string, но тогда в запросе нельзя будет делать мат.действия.
Ясно, что дело темное. Что, теперь переходить на солит, эхехе.. :(
 
Сообщение
Quote (mishem)
А ты данные в базу вводишь через текстовое поле?
нет. Они вводились путем мат. действий в самом запросе. Но делал и через НБ, тоже самое
Получается так field1[-/*]field2=field3, где field поля в бд
Quote (Вадим)
Сергей, ты заносишь в поле результат вычислений
да. В функции match разрядность по боку, там хоть 0 ставь, хоть 2, все равно результат такой же, т.е. дело не в НБ, а в типе. Таблица создается динамически, потому в ручную править нет возможности. А в плаге всего два типа Integer и Float. :(
Придется приводить их к типу string, но тогда в запросе нельзя будет делать мат.действия.
Ясно, что дело темное. Что, теперь переходить на солит, эхехе.. :(

Автор - Сергей
Дата добавления - 05 Ноября 2011 в 17:56
Alex3AДата: Сб, 05 Ноября 2011, 18:31 | Сообщение # 18
Друг клуба ММВ
Сергей, чет не понял, что тебе мешает?
a,b integer;
a=1.97*100
b=1,97000002861023 *100
a=b полюбому. :D
 
СообщениеСергей, чет не понял, что тебе мешает?
a,b integer;
a=1.97*100
b=1,97000002861023 *100
a=b полюбому. :D

Автор - Alex3A
Дата добавления - 05 Ноября 2011 в 18:31
СергейДата: Сб, 05 Ноября 2011, 19:11 | Сообщение # 19
Необукер
Quote (Alex3A)
Сергей, чет не понял, что тебе мешает?
это как раз и не мешает, можно мой сабж превести в string и спокойно делать расчеты в НБ. Я то планировал расчеты делать уже в запросах, при нужной выборке нужный результат при малых затратах :D
Но уперся в то, что математика в запросе канает только с числовыми типами.
У меня до сабжа было два варианта, умножать в самом запросе сохранив тип. либо в нб после вывода, но подумал, что может кто еще что подскажет, много же кто работал с плагом, а я чего не доглядел.
Получается других вариантов нет, жаль, но что поделать раз плагин не всемогущ :D
Всем спасибо за помощь!
 
Сообщение
Quote (Alex3A)
Сергей, чет не понял, что тебе мешает?
это как раз и не мешает, можно мой сабж превести в string и спокойно делать расчеты в НБ. Я то планировал расчеты делать уже в запросах, при нужной выборке нужный результат при малых затратах :D
Но уперся в то, что математика в запросе канает только с числовыми типами.
У меня до сабжа было два варианта, умножать в самом запросе сохранив тип. либо в нб после вывода, но подумал, что может кто еще что подскажет, много же кто работал с плагом, а я чего не доглядел.
Получается других вариантов нет, жаль, но что поделать раз плагин не всемогущ :D
Всем спасибо за помощь!

Автор - Сергей
Дата добавления - 05 Ноября 2011 в 19:11
Alex3AДата: Сб, 05 Ноября 2011, 22:42 | Сообщение # 20
Друг клуба ММВ
Quote (Сергей)
Но уперся в то, что математика в запросе канает только с числовыми типами.

Так 1,97000002861023 это то же самое что и 1.97, так что можеш делать свои расчеты. :D
Тебя ведь не расчеты волнуют а их отображение, при последцующей выборке, так ты просто нормализуй их для отображения, при выводе.
 
Сообщение
Quote (Сергей)
Но уперся в то, что математика в запросе канает только с числовыми типами.

Так 1,97000002861023 это то же самое что и 1.97, так что можеш делать свои расчеты. :D
Тебя ведь не расчеты волнуют а их отображение, при последцующей выборке, так ты просто нормализуй их для отображения, при выводе.

Автор - Alex3A
Дата добавления - 05 Ноября 2011 в 22:42
mishemДата: Сб, 05 Ноября 2011, 22:55 | Сообщение # 21
Эксперт форума
Alex3A, Если я правильно понимаю, то само поле в базе преобразует в такой вид 1,97000002861023. В принципе с одной стороны ты правильно говоришь. Ничего не мешает сделать из

field1[-/*]field2=field3

field1[-/*]field2*100=field3

Это нормально будет если все числа идут дробные типа 12,445 или 1, 23. Но если к примеру число получается целое? 10*100 и т.д.

А вообще, если можно произвести матдействия, то можно и условие поставить, если после запятой столько то, умножить на то то, или не умножать.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.


Сообщение отредактировано
mishem - Сб, 05 Ноября 2011, 22:57
 
СообщениеAlex3A, Если я правильно понимаю, то само поле в базе преобразует в такой вид 1,97000002861023. В принципе с одной стороны ты правильно говоришь. Ничего не мешает сделать из

field1[-/*]field2=field3

field1[-/*]field2*100=field3

Это нормально будет если все числа идут дробные типа 12,445 или 1, 23. Но если к примеру число получается целое? 10*100 и т.д.

А вообще, если можно произвести матдействия, то можно и условие поставить, если после запятой столько то, умножить на то то, или не умножать.

Автор - mishem
Дата добавления - 05 Ноября 2011 в 22:55
Alex3AДата: Вс, 06 Ноября 2011, 01:58 | Сообщение # 22
Друг клуба ММВ
mishem, поторяю ысшо раз, вся математика в базе коррекна и field1[-/*]field2=field3 вполне нормально, вид 1,97000002861023 числа 1,97 просто недостаток отображения, ну и еще, для опереторов сравнения <,>,= нужно будет приводить в нужный вид.
А мож и нет. :D
Длинная цифра просто неудобна для просмотра, и ее обычно форматируют, оставляя нужное количество знака после запятой.
Просто есть такие цыфери, получающиеся от матопераций, точность которых лимитируется количеством отведенных разрядов для операции 10\3=3.33333333. Вот и возникают такие длинные цыфери, это связанно с форматом их хранения.
Так что некаторыя комбинации стремятся тут же превратится "длинные" а=3.7 в строку получаем "длинную" (эт я так , к примеру, цыферь точно не помню, но удлиняется).
В общем, не парьте головы, просто нормализуйте при выводе.
 
Сообщениеmishem, поторяю ысшо раз, вся математика в базе коррекна и field1[-/*]field2=field3 вполне нормально, вид 1,97000002861023 числа 1,97 просто недостаток отображения, ну и еще, для опереторов сравнения <,>,= нужно будет приводить в нужный вид.
А мож и нет. :D
Длинная цифра просто неудобна для просмотра, и ее обычно форматируют, оставляя нужное количество знака после запятой.
Просто есть такие цыфери, получающиеся от матопераций, точность которых лимитируется количеством отведенных разрядов для операции 10\3=3.33333333. Вот и возникают такие длинные цыфери, это связанно с форматом их хранения.
Так что некаторыя комбинации стремятся тут же превратится "длинные" а=3.7 в строку получаем "длинную" (эт я так , к примеру, цыферь точно не помню, но удлиняется).
В общем, не парьте головы, просто нормализуйте при выводе.

Автор - Alex3A
Дата добавления - 06 Ноября 2011 в 01:58
mishemДата: Вс, 06 Ноября 2011, 02:10 | Сообщение # 23
Эксперт форума
Alex3A,че ты мне разжовываешь, я уже давно все понял. :D
Сергей просто интерисовался, есть ли такое поле, которое само бы преобразовало число без лишних телодвижений. Как выяснили, вроде бы как нет. Значит будет мудрить. :D


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.


Сообщение отредактировано
mishem - Вс, 06 Ноября 2011, 02:13
 
СообщениеAlex3A,че ты мне разжовываешь, я уже давно все понял. :D
Сергей просто интерисовался, есть ли такое поле, которое само бы преобразовало число без лишних телодвижений. Как выяснили, вроде бы как нет. Значит будет мудрить. :D

Автор - mishem
Дата добавления - 06 Ноября 2011 в 02:10
Alex3AДата: Вс, 06 Ноября 2011, 02:16 | Сообщение # 24
Друг клуба ММВ
Почитай ысшо тут, не все понятно как могло бы показатся. :D
http://habrahabr.ru/blogs/cpp/112953/

Добавлено (06 Ноябрь 2011, 02:16)
---------------------------------------------

Quote (mishem)
Значит будет мудрить

ну а че мудрить та, поле флоат содержит цыфру флоат а не ее так скать представление.
И тут непанятна, то ли цыферь неустраивает то ли ее вид.
 
СообщениеПочитай ысшо тут, не все понятно как могло бы показатся. :D
http://habrahabr.ru/blogs/cpp/112953/

Добавлено (06 Ноябрь 2011, 02:16)
---------------------------------------------

Quote (mishem)
Значит будет мудрить

ну а че мудрить та, поле флоат содержит цыфру флоат а не ее так скать представление.
И тут непанятна, то ли цыферь неустраивает то ли ее вид.

Автор - Alex3A
Дата добавления - 06 Ноября 2011 в 02:16
mishemДата: Вс, 06 Ноября 2011, 02:19 | Сообщение # 25
Эксперт форума
Quote (Alex3A)
то ли цыферь неустраивает то ли ее вид.

ее вид.
Quote (Alex3A)
Почитай ысшо тут

не не, я бороздить космические просторы не собираюсь. :D
Я по сей день не знаю что такое бит, байт, мегабайт... :D


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Alex3A)
то ли цыферь неустраивает то ли ее вид.

ее вид.
Quote (Alex3A)
Почитай ысшо тут

не не, я бороздить космические просторы не собираюсь. :D
Я по сей день не знаю что такое бит, байт, мегабайт... :D

Автор - mishem
Дата добавления - 06 Ноября 2011 в 02:19
Alex3AДата: Вс, 06 Ноября 2011, 02:27 | Сообщение # 26
Друг клуба ММВ
Проста цыфери флот бывают разной размерности, и скажем в иных языках с ними мона совладать выбрав нужную. А так как вычисления идут в базе акеса, то и нуна смотреть какие там у флоата размеры.

Добавлено (06 Ноябрь 2011, 02:26)
---------------------------------------------
Да, ысшо, и какой флоат в нб. :D

Добавлено (06 Ноябрь 2011, 02:27)
---------------------------------------------

Quote (mishem)
Я по сей день не знаю что такое бит, байт, мегабайт...

А мну часто приходится иметь дело с подобным, и тут главнае разобратся с размерностью.
 
СообщениеПроста цыфери флот бывают разной размерности, и скажем в иных языках с ними мона совладать выбрав нужную. А так как вычисления идут в базе акеса, то и нуна смотреть какие там у флоата размеры.

Добавлено (06 Ноябрь 2011, 02:26)
---------------------------------------------
Да, ысшо, и какой флоат в нб. :D

Добавлено (06 Ноябрь 2011, 02:27)
---------------------------------------------

Quote (mishem)
Я по сей день не знаю что такое бит, байт, мегабайт...

А мну часто приходится иметь дело с подобным, и тут главнае разобратся с размерностью.

Автор - Alex3A
Дата добавления - 06 Ноября 2011 в 02:27
mishemДата: Вс, 06 Ноября 2011, 02:28 | Сообщение # 27
Эксперт форума
То что имеется
Quote
Char
Символьные данные фиксированной длины с максимальной длиной 255* символов. Желательный размер определен в круглой скобке. Например: Char(35)

Memo
Символьные данные переменной длины с максимальной длиной 64,000* символов. Этот тип поля иногда называют "Текстовым" полем.

Boolean
Может содержать или "true" или "false". Этот тип поля иногда называют Bit.

Integer
Целое число между-32 768 и 32,767*.

BigInt
Очень большое целое число между-2 147 483 648 и 2,147,483,647*.

AutoInc
Уникальное последовательное число автоматически вставляется, когда добавляется запись. Число будет увеличиваться на единицу для каждой новой записи.

Currency
Денежные значения. Точность - 15 цифр слева от десятичной точки и 4 цифры справа. Этот тип поля иногда называют "Денежным".

Float
Десятичное число между 10^28-1 и 10^28-1*.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеТо что имеется
Quote
Char
Символьные данные фиксированной длины с максимальной длиной 255* символов. Желательный размер определен в круглой скобке. Например: Char(35)

Memo
Символьные данные переменной длины с максимальной длиной 64,000* символов. Этот тип поля иногда называют "Текстовым" полем.

Boolean
Может содержать или "true" или "false". Этот тип поля иногда называют Bit.

Integer
Целое число между-32 768 и 32,767*.

BigInt
Очень большое целое число между-2 147 483 648 и 2,147,483,647*.

AutoInc
Уникальное последовательное число автоматически вставляется, когда добавляется запись. Число будет увеличиваться на единицу для каждой новой записи.

Currency
Денежные значения. Точность - 15 цифр слева от десятичной точки и 4 цифры справа. Этот тип поля иногда называют "Денежным".

Float
Десятичное число между 10^28-1 и 10^28-1*.

Автор - mishem
Дата добавления - 06 Ноября 2011 в 02:28
Alex3AДата: Вс, 06 Ноября 2011, 02:42 | Сообщение # 28
Друг клуба ММВ
Quote
Fundamental real types
Type Range Significant digits Size in bytes
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8

Видать сингл 4 байта равно длине сего текста - хххх :D

Добавлено (06 Ноябрь 2011, 02:42)
---------------------------------------------
А в тексте по приведенной выше ссылке пишуть что число 0.2 уж не сингл а дабл. :D

 
Сообщение
Quote
Fundamental real types
Type Range Significant digits Size in bytes
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8

Видать сингл 4 байта равно длине сего текста - хххх :D

Добавлено (06 Ноябрь 2011, 02:42)
---------------------------------------------
А в тексте по приведенной выше ссылке пишуть что число 0.2 уж не сингл а дабл. :D


Автор - Alex3A
Дата добавления - 06 Ноября 2011 в 02:42
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Переопределить тип полей в заполненной базе данных .mdb (Как заменить тип полей без потери самих данных?)
  • Страница 1 из 1
  • 1
Поиск: