Текущий архив: 2005.07.31;
Скачать: CL | DM;
ВнизКак прочитать из поля и запихать в параметр число Int64 (Oracle)? Найти похожие ветки
← →
ANB © (2005-06-08 21:08) [0]В базе возможны целые числа, которые не лезут в Integer и я их пытаюсь хранить в Int64. Как с ними грамотно работать ? Когда у меня вылезла бага, некогда было разбираться и я сделал все через AsString. Но это, имхо, некошерно.
← →
ANB © (2005-06-08 21:09) [1]Странна, галку ставил на оракле, а вылез MySQL. Админы - обратите внимание на ошибку.
← →
Anatoly Podgoretsky © (2005-06-08 23:09) [2]AsLargeInt
← →
ANB © (2005-06-08 23:15) [3]В ParamByName я уже нашел. Правда вот так
qrSQL.ParamByName().AsNumber.AsLargeInt;
А вот - qrSQL.FieldByName("").AsLargeInt; - не комипляется.
И вот так - qrSQL.FieldByName("").AsNumber.AsLargeInt; - тоже.
← →
Anatoly Podgoretsky © (2005-06-09 08:58) [4]Тип поля в базе и в программе.
← →
ANB © (2005-06-09 14:34) [5]В базе - number без скобок (по моему, по умолчанию - 19). В программе - вообще никакой - получаю список полей после открытия датасета.
← →
Anatoly Podgoretsky © (2005-06-09 14:36) [6]ANB © (09.06.05 14:34) [5]
К вообще никакому обратиться нельзя.
← →
Anatoly Podgoretsky © (2005-06-09 14:37) [7]Не знаю Оракла, но сомневаюсь, что number это "Int64"
← →
ANB © (2005-06-09 14:40) [8]В интегер намбер нормально лезет, пока очень большое число не напишу. Да и какя разница, какого типа поле в программе - я же его через FieldByName() достаю с нужным мне представлением.
← →
ANB © (2005-06-09 14:41) [9]Кстати и в Int64 тоже, при тех же условиях.
← →
Anatoly Podgoretsky © (2005-06-09 14:48) [10]Разница большая и состоит в том что к типу ftInteger нельзя применять AsLargeInt, к тому же его просто нет в природе.
← →
ANB © (2005-06-09 20:30) [11]А почему к параметру можно ? И почему нельзя ? Вот я могу применить AsInteger к строковому полю (ftString), ошибку получу в рантайме. Но скомпиляется же. А LargeInt для полей я вообще не нашел. Почему и сижу с вопросом.
← →
Petr V. Abramov © (2005-06-09 20:43) [12]field.asfloat вполне корректно работает с number без скобок
← →
ANB © (2005-06-09 20:45) [13]А потом круглить ? Кстати, надо поэкспериментить.
← →
Anatoly Podgoretsky © (2005-06-09 20:54) [14]ANB © (09.06.05 20:30) [11]
Плохо ищешь TLargeintField
← →
ANB © (2005-06-09 20:56) [15]Это типа TLargeintField(FieldByName()) ? Ща попробую.
← →
ANB © (2005-06-09 20:57) [16]Не пахает так. И маленькие числа поломались.
← →
Anatoly Podgoretsky © (2005-06-09 21:01) [17]Какое к черту приведение, это же диверсия.
В конце концов пора бы уже сказать какой у тебя тип поля в программе.
← →
ANB © (2005-06-09 21:05) [18]Дык не заводил спецом. Ща попробую статически. . . Автоматом село как TFloatField. То есть придется заводить это поле ручками в рантайме ?
← →
Anatoly Podgoretsky © (2005-06-09 21:08) [19]А толку, это будет уже другое вредительство. Надо делать на сервере.
← →
ANB © (2005-06-09 21:15) [20]Это как ? Number без параметров я для ID юзаю, чтобы не кончились раньше времени. Получается, что они кончаться раньше, чем я думал ?
← →
Anatoly Podgoretsky © (2005-06-09 22:00) [21]Ну и как видишь это не LargeInt для Дельфи
← →
Reindeer Moss Eater © (2005-06-09 22:08) [22]Используй Double. Это проще.
Точности у типа number Оракла хватит для того что бы корректно сравнивать в Delphi две AsFloat величины содержащих значения полей (скажем number(12,0))
← →
ANB © (2005-06-09 22:35) [23]Number(12,0) - маловато будет.
← →
ANB © (2005-06-09 22:36) [24]Проблема срочно не стоит. Раз вылезла на промышленной конвертации, но сроки горели и я залатал дырку через StrToInt(AsString). Все отработало. Но теперь интересно - неужели только так по дубовому ?
← →
Anatoly Podgoretsky © (2005-06-09 23:23) [25]ANB © (09.06.05 22:35) [23]
Сколькно новых записей в сутки?
← →
Reindeer Moss Eater © (2005-06-10 00:02) [26]number(12,0) это не предел.
Просто для примера приведено.
Работай с Double и будет счастье.
← →
ANB © (2005-06-10 00:39) [27]
> Anatoly Podgoretsky © (09.06.05 23:23) [25]
- это уже не у меня. Но примерно :
В базе около 500 тысяч человек. На каждого приходится в месяц около 20 записей в связанных таблицах, то есть около 10 миллионов новых записей в самой детализованной таблице в месяц.
← →
ANB © (2005-06-10 00:40) [28]
> Работай с Double и будет счастье.
- ID с типом Double - как то несерьезно. :(((
← →
Reindeer Moss Eater © (2005-06-10 00:44) [29]Ну тогда извращайся с квадратными колесами.
А способ-то с double - верный.
← →
ANB © (2005-06-10 00:47) [30]Млин, я в новом проекте уже везде Int64 напихал. Хотя тут маловероятно переполнение - больше 1000 записей в день я не генерю . . . И то только в одной таблице. На крайняк - придется только для нее изгальнутся.
← →
Reindeer Moss Eater © (2005-06-10 00:48) [31]Тебе в паскале-то зачем этот id?
Заселектить в одном месте и использовать в качестве параметра запроса в другом?
Тогда забудь про ENABLE INTEGERS и работай с TFloatField.
Заодно навсегда забудешь про нехватку диапазона Integer.
← →
ANB © (2005-06-10 00:52) [32]В дабл только 15 цифр влезает, дальше округление начнется, а в Int64 - 19. Хотя, экспериментально, я в number только 14 цифр смог запихать, дальше отрезание началось
← →
ANB © (2005-06-10 00:54) [33]
> Тебе в паскале-то зачем этот id?
> Заселектить в одном месте и использовать в качестве параметра
> запроса в другом?
- ну да. Снять с грида и отправить параметром в полезную функцию. Я их уже все на int64 повесил.
← →
Reindeer Moss Eater © (2005-06-10 00:55) [34]У Оракла в типе NUMBER 38(тридцать восемь!) значащих цифр.
Сравни с точностью паскалевского типа Double и все сразу станет ясно. (Это про корректность операций сравнения)
Или ты хочешь сказать, что значения кодов и в диапазон Double у тебя не влезает?
Ты часом не атомы во вселенной решил пересчитать?
:)
← →
Reindeer Moss Eater © (2005-06-10 00:56) [35]- ну да. Снять с грида и отправить параметром в полезную функцию. Я их уже все на int64 повесил.
Используй Double.
И все.
Ничего изобретать не надо.
← →
ANB © (2005-06-10 01:02) [36]
> Сравни с точностью паскалевского типа Double
- посмотрел на дабл - 15 значащих цифр.
> У Оракла в типе NUMBER 38(тридцать восемь!) значащих цифр.
- я тоадом, ручками пытался число запихать поболее, с 15 - цифры началось округление. Хотя, это может быть глюк тоада.
← →
ANB © (2005-06-10 01:07) [37]Обалдет, и правда 38 цифр влезло. Это я и в Int64 не запихаю. Правда смотреть можно только в виде to_char
← →
Anatoly Podgoretsky © (2005-06-10 07:39) [38]ANB © (10.06.05 00:47) [30]
При 1000 записях в день 12.0 хватит на 2 739 726 лет
← →
<Lelik> (2005-06-16 10:36) [39]Удалено модератором
Примечание: Тебе кто то запретил задавать вопросы в форуме?
Страницы: 1 вся ветка
Текущий архив: 2005.07.31;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.037 c