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

Вниз

Ошибка при работе с ADODataSet Access тип DEC   Найти похожие ветки 

 
palva ©   (2009-10-08 12:32) [0]

Натолкнулся и не могу продвинуться. Пока заменил командой INSERT. Но хочу разобраться.
Пустая база данных создана в Access 2003, MDAC 2.8 Windows-XP ставить не хочет, говорит, что все уже имеется. Провайдер Microsoft.Jet.OLEDB.4.0
Таблица создана так:

procedure TForm1.BtnCreateClick(Sender: TObject);
begin
 ADOCommand1.CommandText := "CREATE TABLE Test(id COUNTER, str VARCHAR(10), dc DEC(4,1))";
 ADOCommand1.Execute;
end;

Ошибка при работе возникает здесь:
procedure TForm1.Button1Click(Sender: TObject);
var
 bcd1: TBcd;
begin
 ADODataSet1.CommandText := "SELECT id, str, dc FROM Test";
 ADODataSet1.Open;
 ADODataSet1.Append;
 ADODataSet1.Fields[1].Value := "Paloma";
 // Следующий способ присваивания
 // работает непосредственно через ADO VBScript
 ADODataSet1.Fields[2].Value := "345,6";
 // но в данном случае вызывает ошибку при вызове Post
 // Даже так попробовал
 //bcd1.Precision := 4;
 //bcd1.SignSpecialPlaces := 4;
 //bcd1.Fraction[0] := $34;
 //bcd1.Fraction[1] := $56;
 //ADODataSet1.Fields[2].AsBCD := bcd1;
 ADODataSet1.Post;
 // В этом месте "Несоответствие типов данных в выражении условия отбора."
end;

Если поле DEC не заполнять, то запись успешно добавляется.


 
clickmaker ©   (2009-10-08 12:40) [1]

а если банальный double?


 
palva ©   (2009-10-08 12:55) [2]


> а если банальный double?

Это я пробовал.
ADODataSet1.Fields[2].Value := "3";
ADODataSet1.Fields[2].Value := 345.6;
ADODataSet1.Fields[2].AsFloat := 345.6;
ADODataSet1.Fields[2].AsInteger := 345;
ADODataSet1.Fields[2].AsCurrency := 345;
Ошибка та же


 
palva ©   (2009-10-08 13:00) [3]

Может быть я ошибаюсь, но у Access 2000 тип DEC/NUMERIC отсутствовал
Сейчас вижу, что этот тип поддерживается и через чистый ADO нормально обновляется.
Может быть в VCL какая-то недоработка, касающаяся этого типа?


 
clickmaker ©   (2009-10-08 13:05) [4]

> Может быть в VCL какая-то недоработка, касающаяся этого
> типа?

если в vcl, тогда при отладке внутри vcl можно увидеть, на какой строке валится


 
palva ©   (2009-10-08 13:17) [5]


> если в vcl, тогда при отладке внутри vcl можно увидеть,
> на какой строке валится

У меня отладчик в VCL не заходит. Надо что-то подключить?


 
clickmaker ©   (2009-10-08 13:18) [6]

> Надо что-то подключить?

use debug dcu в настройках компилера


 
Плохиш ©   (2009-10-08 13:26) [7]

Чему равно

> ADODataSet1.Fields[2].FieldType

?


 
palva ©   (2009-10-08 13:45) [8]

clickmaker ©   (08.10.09 13:18) [6]
Спасибо. Поковыряюсь. Если лень и занятость не пересилят любопытство.

> ADODataSet1.Fields[2].FieldType

Такого свойства у меня нет. Но если посмотреть через чистый ADO свойство Type, то возвращает 131, что соответствует NUMERIC/DECIMAL



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

Форум: "Начинающим";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1254123674
cwl
2009-09-28 11:41
2009.11.22
вопрос админам о скриптах


15-1253554559
Knight
2009-09-21 21:35
2009.11.22
Пользовательский интерфейс


2-1254997745
Маркабес
2009-10-08 14:29
2009.11.22
точность sql запроса


1-1225211215
leonidus
2008-10-28 19:26
2009.11.22
Кодирование кириллицы для использования в URL


2-1253824043
Незнайка
2009-09-25 00:27
2009.11.22
Quantum Grid и немецкие буквы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский