На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
  
> Ошибка BOF и EOF при работе с mysql , при выполнении form1.adotable.RecNo:=x;
    есть код
    ExpandedWrap disabled
      var
      x:integer;
      begin
        x:=form1.adotable1.RecordCount; //здесь возвращает количество строк, отличное от НУЛЯ
        showmessage(inttostr(x));  
        form1.adotable1.RecNo:=1; // а здесь возникает ошибка
      end;


    При выполнении данного кода, и работе с локальной базой msAccess при выполнении
    ExpandedWrap disabled
      form1.adotable1.RecNo:=x;

    происходил переход на запись с указанным номером в таблице.

    Когда начал переводить программу на удаленную базу MYSQL на сервере, столкнулся с проблемой, что при выполнении этой строки, вылетает эта ошибка
    BOF или EOF имеет значение true либо запись была удалена...
    хотя запись с таким номером существует...

    Подскажите как решить?
      Цитата dreyqq @
      form1.adotable1.RecNo:=1; // а здесь возникает ошибка

      ExpandedWrap disabled
        Table.First(); // переход на первую запись набора данных
      Цитата dreyqq @
      хотя запись с таким номером существует...
      Номер записи - штука весьма условная. Поле первичного ключа в таблице (наборе данных) есть?
      Сообщение отредактировано: LMM -
        ТС, мой тебе совет, не юзай adotable, используй силуadoquery

        Добавлено
        И, да, позиционироваться через recno:=... моветон. Используй first/last/next/prior + ORDER/LIMIT в теле запроса.
          Цитата dreyqq @
          form1.adotable1.RecNo:=1

          При каком событие это событие происходит, коннект есть?
          Цитата Gonarh @
          И, да, позиционироваться через recno:=... моветон.

          :yes-sad: Индекс может быть разный
            Цитата Bas @

            Коннект есть, recordCount возвращает правильное значение записей, а вот при попытке перехода на запись (RecNo) и вылетает ошибка
              Цитата dreyqq @
              recordCount возвращает правильное значение записей,

              Согласен.
              Цитата dreyqq @
              запись (RecNo) и вылетает ошибка

              Rекосет может вернуть Все что ему заказали
              Разница в локальной и сетевой БД .

              Добавлено
              Кто получит данные первым
                Когда у меня были проблемы с .RecordCount, то я сначала делал
                ExpandedWrap disabled
                  МойНабор.first;
                  МойНабор.last;
                  МойНабор.first;

                А уж потом проводил нужные мне манипуляции. Хотя моя проблема была в некорректном .RecordCount
                Возможно если тебе нужно перейти на 1-ю запись, то стоит использовать вместо .recno:=1 как раз .first
                Сообщение отредактировано: Archelon -
                  Обычно FetchAll для этих целей есть
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0369 ]   [ 17 queries used ]   [ Generated: 29.03.24, 01:45 GMT ]