Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / [Paradox] Внезапная ошибка на SELECT, "The search key was not found in any record" / 5 сообщений из 5, страница 1 из 1
28.07.2011, 15:10
    #37371042
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Paradox] Внезапная ошибка на SELECT, "The search key was not found in any record"
Ситуация следующая:
Есть СУБД Paradox, запущенная на некоторой машине. Программа копирует данные БД к себе, открывает их на локальной машине и выполняет запрос (схема существует по историческим причинам). Всё работало до тех пор, пока в один прекрасный день СУБД на "основной" машине очередной раз не перезагрузили. После чего запрос к паре таблиц стал выдавать вынесенную в заголовок ошибку. Borland Database Desktop аналогичный запрос вроде бы выполняет.
Вопрос: что случилось (могло случиться) с базой данных и как это можно было бы исправить?

Код работы с БД (C#.NET):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
        /// <summary>
        /// Создаёт объект и открывает подключение
        /// </summary>
        /// <param name="path">Путь к базе (i.e. C:\PARADOXDB\)</param>
        public ParadoxBase(string path)
        {
            m_connection = new OleDbConnection();
            StringBuilder ConnectionString = new StringBuilder("");
            ConnectionString.Append(@"Provider=Microsoft.Jet.OLEDB.4.0;");
            ConnectionString.Append(@"Extended Properties=Paradox 7.x;");
            ConnectionString.Append(@"Data Source=" + path + ";");
            ConnectionString.Append(@"Mode=Read;");

            m_connection.ConnectionString = ConnectionString.ToString();
            try
            {
                m_connection.Open();
                m_failure = null;
                m_lastErrorText = "";
            }
            catch (Exception e)
            {
                m_failure = e; 
                m_lastErrorText = e.Message;
            }
        }

        /// <summary>
        /// Разрешает SQL-запрос к таблице
        /// </summary>
        /// <param name="SQLRequest">Запрос к таблице</param>
        /// <returns>Возвращённые данные в виде типа DataSet</returns> 
        public DataSet Request(string SQLRequest)
        {
            if (m_failure != null) return new DataSet();
            try
            {
                OleDbDataAdapter da = new OleDbDataAdapter(SQLRequest, m_connection);
                DataSet dsRetrievedData = new DataSet();
                da.Fill(dsRetrievedData);
                return dsRetrievedData;
            }
            catch (Exception e)
            {
                m_failure = e;
                m_lastErrorText = e.Message;
                return new DataSet();
            }
        }
Пример приводящего к ошибке запроса:
Код: plaintext
1.
2.
3.
SELECT D.Num, L.TabNumber, D.Mode 
FROM pLogData D, pList L 
WHERE D.Num >=  190000  AND D.DoorIndex =  2  
ORDER BY D.TimeVal
...
Рейтинг: 0 / 0
28.07.2011, 15:17
    #37371065
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Paradox] Внезапная ошибка на SELECT, "The search key was not found in any record"
[пальцем в небо] может, индексы загнулись? попробуйте переиндексировать все таблицы [/пальцем в небо]
...
Рейтинг: 0 / 0
28.07.2011, 15:51
    #37371153
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Paradox] Внезапная ошибка на SELECT, "The search key was not found in any record"
tanglir,

Спасибо, проблема решилась. По схеме "Удалить первичный индекс таблицы - создать первичный индекс".
Чёртов парадокс.
...
Рейтинг: 0 / 0
28.07.2011, 15:56
    #37371173
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Paradox] Внезапная ошибка на SELECT, "The search key was not found in any record"
Abstraction, название обязывает
...
Рейтинг: 0 / 0
26.08.2011, 17:22
    #37414083
Julianis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Paradox] Внезапная ошибка на SELECT, "The search key was not found in any record"
Abstraction
Скажите пожалуйста, каким образом можно "Удалить первичный индекс таблицы - создать первичный индекс" ???
Просто у меня тоже возникает ошибка, только другого характера - "В операции должен использоваться обновляемый запрос."
Подключаюсь к таблицам парадокса через "Microsoft Paradox Driver .db", по средствам провайдера Odbc. Пробовал и через OleDb провайдер, та же ошибка.
Таблицы не мои, пришли ко мне из вне, но с индексами там полный порядок, т.е. запросы на селект проходят на ура, а вот ошибка возникает, когда пытаюсь изменить данные. При чем запросы на изменение проходят неудачно только на этих таблицах, подозреваю, что дело в том, что на таблицах стоит пароль, который убрать нельзя, возможно Odbc стандартно устанавливает для таблиц защищенных паролем режим чтения readonly, а как обойти это я не знаю ... уже 3-ий день мучаюсь, скажите пожалуйста, что можно сделать, чтобы запросы на изменение данных заработали. Заранее благодарен.
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / [Paradox] Внезапная ошибка на SELECT, "The search key was not found in any record" / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]