Форум: "Базы";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
ВнизADO и EInvalidOp , в чем связь??? Найти похожие ветки
← →
Hyzhak (2003-12-24 19:33) [0]Странное дело. Ситуация такая, может кто сталкивался и подскажет в чем может проблема:
Использую TADOQuery компоненты завязанные через TADOConnection. Которые подключены к mdb таблицам.
Формирую запросы, открываю из. Совершаю пару действий, необходимых чтоб вставлять полученные данные. И выкладываю данные. У меня все работает нормально, да и на многих машинах пашет, даже там где не проинталена оболочка. Но есть др. машины с теме же вроде программами, абсолютно идентичными системами. Так вот в них глюк:
float-point operation которую если перехватывать получаем сообщение EinvalidOp, порой даже просто синий экран.
И что интересно, если выводить данные из Query просто использую DBGrid нет проблем, а если же читать данные (абсолютно любыми способами – exception !!)
Подскажите в чем может быть загвоздка, что делать?
← →
Yurock (2003-12-24 19:45) [1]Может, все-таки (не смотря на "абсолютно идентичные системы"), где-то версия ADO старая и не поддерживает новый формат mdb (он изменился с 2000г)?
← →
Hyzhak (2003-12-24 20:03) [2]Нет, проблема к сожалению явно не в этом, у меня более старая версия, но даже на др. машине, где находися более новый драйвер Access (идентичный тожу же который глючит, по крайней мере по номеру версии 4.00.6200.00) все идет без запинки.
← →
sniknik (2003-12-24 20:24) [3]в настройках системы, посмотри и сравни "разделитель целой и дробной частей числа"
это в панели управления - язык и стандарты.
← →
Hyzhak (2003-12-24 20:27) [4]везде ",". Но я думаю дело даже не в это я пытаюсь вытаскивать строковое поле при помощи свойства Value.
← →
Yurock (2003-12-24 20:39) [5]Можешь привести фрагмент кода, где падает?
← →
Hyzhak (2003-12-24 20:49) [6]кратко следующее :
//подключение файла
ADOConnectionMVV->Connected = false;
ADOConnectionMVV->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Password=\"\";User ID=Admin;Data Source="+m_strMainDataDir+"MVV.mdb;Mode=Share Deny None;Extended Properties=\"\";Jet OLEDB:System database=\"\";Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don"t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";
ADOConnectionMVV->Connected = true;
//query уже ссылается на connection
ADOQuerySubObjectsMVV->Close();
ADOQuerySubObjectsMVV->SQL->Clear();
ADOQuerySubObjectsMVV->SQL->Add("SELECT Enter_ShortName, ShortName, EDRPOY, R_num, Date_reg ");
ADOQuerySubObjectsMVV->SQL->Add("FROM Total_MVV Source");
ADOQuerySubObjectsMVV->Open();
//если сразу же читать значения полей (мы их получаем без проблем) .
//но я предварительно подготавливаю TreeView на что уходит немного времени.
//обращений к таблицам и Query не проиходит
//...
while(!ADOQuerySubObjectsMVV->Eof){
//здесь происходит глюк ->
AnsiString str = ADOQuerySubObjectsMVV->Fields->FieldByName("Enter_ShortName")->AsString;
//.....
ADOQuerySubObjectsMVV->Next();
}
← →
Yurock (2003-12-24 21:13) [7]Скорее всего, надо еще при открытии явно указывать кодовую страницу (что-то типа LANGDRIVER в BDE)
← →
sniknik (2003-12-25 00:39) [8]а столько параметров в строке действительно необходимо?
часто достаточно
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Base.MDB;Persist Security Info=False
> Engine Type=4
это офис 97
у тебя какая версия базы?
и версия дельфей не 5?
что будет если
вместо
> //но я предварительно подготавливаю TreeView на что уходит немного времени.
поставить sleep?
← →
Hyzhak (2003-12-25 20:43) [9]не совсем понял ка это можно сделать в ADO:
>Скорее всего, надо еще при открытии явно указывать кодовую >страницу (что-то типа LANGDRIVER в BDE)
Я вообщето в Builder-е 5 пишу (необходимое условие :( ) Но думаю большой разницы нет все равно в Dephi ресурсы теже.
Разумное сокращение параметров не принесло ни какого эффекта. Чтож и это приятно. )
Странный фокус получает в том, что я вызываю ф-ию кот. формирует запрос и запускает его, после основная ф-ия пытается уже работать с результатами запроса. Так вот в теле функции читать значения полей получается без проблем, а вне – глюк.
И еще одна странность: если поле было прочитано внутри ф-ии (формирующей запрос), то внешняя его тоже может читать. Но другие поля все равно при чтении invalid float-point operation.
Паузы в теле ф-ии формирующей запрос (sleep) не дали ни каких результатов, поля все равно доступны, а вне также глючат.
← →
sniknik (2003-12-25 21:05) [10]> Паузы в теле ф-ии формирующей запрос (sleep) не дали ни каких результатов, поля все равно доступны, а вне также глючат.
при чем здесь паузы в теле функции?
я имел ввиду вместо
> //если сразу же читать значения полей (мы их получаем без проблем) .
ведь без проблем если сразу
> //но я предварительно подготавливаю TreeView на что уходит немного времени.
вот этот код на слип и замени чтобы пауза такая была а кода не было
> //обращений к таблицам и Query не проиходит
не одними обращениями можно код/данные попортить (а если ты туда по ссылке/указателю залазиш?)
sniknik © (25.12.03 00:39) [8]
> у тебя какая версия базы?
всетаки хотелось бы знать, в 97м бывают глюки. переведи на 2000й.
> И еще одна странность: если поле было прочитано внутри ф-ии (формирующей запрос), то внешняя его тоже может читать. Но другие поля все равно при чтении invalid float-point operation.
то есть в какихто местах читает работает в других нет? тогда не трать время на настройки системы, формат базы, ... т.д. иши глюки в программе.
← →
Hyzhak (2003-12-26 16:11) [11]Друзья извините, я просто глупо притупил. Грешил на ADO ), а на самом деле забыл вернуть значение из ф-ии. Похоже глюк у меня в башке )
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c