Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Вниз

Тип float в InterBase.   Найти похожие ветки 

 
onix   (2002-03-18 08:25) [0]

Здравствуйте.
Раскажите пожалуйста о поведении поля с типом float. Забиваю к примеру число 120,55, в БД вижу 120,549998782569. Достаю значение и получаю 120,5 ?


 
Alexandr   (2002-03-18 09:03) [1]

1) Поведение аналогично single в Delphi Отсюда и точность соответствующая. Хочешь точнее, используй double precision
2) Что значит "достаю значение и получаю"?


 
onix   (2002-03-18 09:13) [2]

>Alexandr ©
2) Что значит "достаю значение и получаю"?

В БД лежит наименование продукта и его цена, хочу загрузить все это хозяйство в TreeView в виде "продукт (цена)". Записывал то цену в виде 120,55 а получил "продукт (120,5)".

И еще одна проблема возникла. Есть процедура на сервере, которая добавляет записи в табл. Так вот превый проход процедуры проходит, а на втором вылетает ошибка "XSQLDA index out of range". В чем причина?


 
Alexandr   (2002-03-18 09:23) [3]

это ты при выводе где-то округляешь/формитируешь неправильно ( с одним знаком после запятой, хотя хочешь 2 знака). И Interbase здесь нипричем.





 
onix   (2002-03-18 09:38) [4]

>Alexandr ©
> это ты при выводе где-то округляешь/формитируешь неправильно ( > с одним знаком после запятой, хотя хочешь 2 знака). И Interbase > здесь нипричем.

Точно. Нашел где не так.
Есть мысли по поводу ошибки "XSQLDA index out of range" ?


 
sanbah   (2002-03-18 09:40) [5]

Зайди на сайс ib.demo.ru там очень хорошо описаны проблеммы округления и их решения.


 
Alexandr   (2002-03-18 09:43) [6]

странная ошибка. Пока мыслей нет.
Приведи текст процедуры, чего делаешь и пр. Мож чего и прояснится...


 
onix   (2002-03-18 09:54) [7]

procedure TFMain.SB_InsProductClick(Sender: TObject);
begin
with DM.SPTemp do begin
Active := false;
StoredProcName := "InsProduct";
Params.CreateParam(ftInteger,"Parent", ptInput).AsInteger := TView(TV_DirProduct.Selected.Data).ID;
Params.CreateParam(ftString,"Head", ptInput).AsString := NameProduct.Text;
Params.CreateParam(ftFloat,"PraceIn", ptInput).AsFloat := PraceIn.Value;
Params.CreateParam(ftFloat,"PraceOut", ptInput).AsFloat := PraceOut.Value;
ExecProc;
end;
end;

А это сама процедурка
CREATE PROCEDURE INSPRODUCT (
PARENT INTEGER,
HEAD VARCHAR(150),
PRACEIN FLOAT,
PRACEOUT FLOAT
) AS
BEGIN
insert into PRODUCT
values (GEN_ID(PRODUCT,1), :PARENT, :HEAD, :PRACEIN, :PRACEOUT);
END


 
Alexandr   (2002-03-18 10:00) [8]

1) Что значит "первый проход процедуры" и "второй"... а "третий" что?

2) Что там насчет транзакций?

3) Приведи описание таблицы PRODUCT со всеми индексами, триггерами и пр.

4) Компоненты какие? IBX?


 
Alexandr   (2002-03-18 10:08) [9]

попробуй prepare прописать перед вызовом или перед созданием параметров.
А еще лучше не использовать TIBStoredProc, а использовать TIBQUERY
в котором написать execute procedure insproduct...
А вообще, глючная эта IBX, лучше уж FIBPlus


 
onix   (2002-03-18 10:12) [10]

1)Ввод первого, второго и т.д. значений. Т.е. при первом нажатии на кнопку все проходит, а вот дальше Error.

2)IB_Trans.Active := true;
IB_Trans.Commit;

3)CREATE TABLE PRODUCT (
ID INTEGER,
PARENT INTEGER,
HEADER CHAR(150),
PRACEIN NUMERIC(15, 2),
PRACEOUT NUMERIC(15, 2)
) И это все.

4) Компоненты IBX.


 
Alexandr   (2002-03-18 10:18) [11]

а индесов что, нету?
про транзакции ненятно. Когда начинается, когда заканчивается.

И все-таки дело в prepare параметров процедуры. Где-то IBX тут не понимает, т.е. как-бы ожидает одни параметры, а ей передают другие, и кирдык.

1) Попробуй через TIBQuery, а еще при этом не с параметрами, а с напрямую формируемым запросом. Вообщем, экпериментируй.
2) Попробуй через IBConsole, IBExpert или что там тебе ближе, эту процедуру запустить- убедишься что дело не в Interbase , а в твоей проге


 
tiger_   (2002-03-18 10:19) [12]

Проблема скорее с CreateParam, т.к. при первом проходе параметры еще не созданы и соответственно все проходит на Ok. При втором проходе имя сохр. процедуры не меняется, соответственно и список параметров не меняется, а вы пытаесь их опять создать.


 
Alexandr   (2002-03-18 10:22) [13]

угу. Вот в этом скорее всего все тело.
Если уж ты запрос формируешь в программе, а не визуально, то и компонент не используй, а создавай объект прямо в программе, а после запуска уничтожай его нафиг.


 
onix   (2002-03-18 10:26) [14]

Большое спасибо всем ответившим.
Проблема действитено была указанная tiger_. Прописал Params.Clear; и все заработало.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
1-22704
Ghost12
2002-03-26 14:37
2002.04.08
Ещё раз про HTML форму, люди помогите реально, дайте путный совет.


1-22686
Goblinus
2002-03-26 13:44
2002.04.08
ComboBox


6-22777
Dup
2002-01-23 15:50
2002.04.08
Mapi


1-22671
Fredericco
2002-03-28 12:23
2002.04.08
Вопрос, наверно, ламерский, но сам я его не решил.


3-22530
Sergey-ZZZ
2002-03-04 19:12
2002.04.08
FastReport245





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский