Форум: "Базы";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизВнутренняя ошибка программирования объектов (Access) Найти похожие ветки
← →
FH (2006-02-27 17:03) [0]работаю с mdb через ADO. делаю несколько селектов. Из под "Администраторов" все работает на ура. Из под остальных пользователей - возникают косяки: один селект 315 записей выполняется около 10 секунд, при чем приложение загружает проц на 100 процентов. второй селект не выполняется вообще, возвращает ошибку ODBC "Внутренняя ошибка программирования объектов". Третий выполняется без проблем. Может, кто сталкивался с подобным? WinXP SP2, mdac 2.81
← →
FH (2006-02-27 17:13) [1]добавлю, что пользовал оба варианта, Jet и ODBC. Ничего не изменилось.
← →
FH (2006-02-27 17:26) [2]еще добавлю, что Jet 3.51 не получается использовать, говорит, что формат базы не распознан, независимо от того, в каком формате база, Access 97, 2000 или 2003. работает только Jet 4.0
← →
msguns © (2006-02-27 17:33) [3]Если работает через 4, зачем дергать старые версии джета ?
Что именно не работает (текст запроса)
← →
FH (2006-02-27 17:42) [4]
procedure TMovieDetailesForm.GetMovie(id : integer);
begin
dm.ds1.CommandText := "select stars.id, stars.name " +
"from stars inner join m_s on stars.id = m_s.s_id " +
"where m_s.m_id = " + IntToStr(id);
try
dm.ds1.Open;
except
on e : Exception do begin
ShowMessage(e.Message);
Exit;
end;
end;
if dm.ds1.Recordset.RecordCount > 0 then begin
dm.ds1.Recordset.MoveFirst;
while not dm.ds1.Recordset.EOF do begin
lbStars.Items.Add(dm.ds1.Recordset.Fields.Item["name"].Value);
dm.ds1.Recordset.MoveNext;
end;
end;
dm.ds1.Close;
dm.ds1.CommandText := "select movies.id, movies.name as mname, movies.name2 as mname2, disks.id as did, disks.name as dname " +
"from (movies inner join disks on movies.disk_id = disks.id) inner join dtypes on disks.media = dtypes.id " +
"where movies.id = " + IntToStr(id);
dm.ds1.Open;
if dm.ds1.Recordset.RecordCount > 0 then begin
dm.ds1.Recordset.MoveFirst;
edId.Text := IntToStr(dm.ds1.Recordset.Fields.Item["id"].Value);
edName.Text := VarToStr(dm.ds1.Recordset.Fields.Item["mname"].Value);
edName2.Text := dm.ds1.Recordset.Fields.Item["mname2"].Value;
edDiskId.Text := IntToStr(dm.ds1.Recordset.Fields.Item["did"].Value);
edDiskName.Text := VarToStr(dm.ds1.Recordset.Fields.Item["dname"].Value);
end;
dm.ds1.Close;
end;
Вот код.
dm - это видимый из формы DataModule
ds1 - TADODataSet
Не работает первый запрос. Второй работает(если поменять их местами)
← →
FH (2006-02-27 17:45) [5]Еще раз уточняю, что этот код не работает под пользователями-не администраторами, под админами работает.
← →
FH (2006-02-27 18:23) [6]Ну помогите кто-нить!!!
← →
Desdechado © (2006-02-27 19:12) [7]как насчет выдачи прав на таблицы?
← →
FH (2006-02-28 20:06) [8]ничего не крутил, все по умолчанию. Шас еще раз посмотрел, владелец всех обьектов - Admin, прога заходит в базу под ним, пароля нет.
← →
FH (2006-02-28 20:22) [9]да вообще трудно предположить, что дело в правах. Из трех запросов один выполняется как надо, один не выполняется, и один выполняется с очень большой задержкой
← →
FH (2006-02-28 20:32) [10]Еще добавлю, что на 2003 винде все работает и под админиами, и под юзверями. Бред какой-то. Завтра отнесу на работу, посмотрю, что будет на других машинах. Может, у меня в винде дело? не верю.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c