Delphi ошибка at beginning of table

Val Marinov seems to have given you a good answer to your question.
I just want to add
some points that don’t directly answer your question but may help you avoid making some mistakes.

You have some code

self.ListBox1.ItemIndex := Random(ListBox1.Items.Count)

which you want to use to set the listbox’s ItemIndex to a random, valid value. There are a couple of things which are asking for trouble about this:

1. Wrong way to use Random

The online help for the Random function says

In Delphi code, Random returns a random number within the range 0 <= X < Range. If Range is not specified, the result is a real-type random number within the range

0 <= X < 1.

For a ListBox, the range of valid ItemIndex values is 0..Items.Count - 1. But Random can return a fractional part, so a better way to write what you want is:

ListBox1.ItemIndex := Trunc(Random(ListBox1.Items.Count));

Called like that, Random will return a value below ListBox1.Items.Count, and the call to Trunc discards the fractional part.

2. Unnecessary use of self.

Your code is liberally sprinkled with the self qualifier. Having to use self like that is usually a sign of bad or sloppy coding.
In your TForm1.AddALL, the self in the first line tells the compiler that the instance of ListBox1 you are referring to is the one which is the TListBox component on your TForm1, rather than some other ListBox1 variable which may also be in scope (e.g. a global variable called ListBox1) when the line is compiled. But the way to avoid that problem is to avoid having the other ListBox1 in scope in the first place.
I suggest you simply delete all the instances of self., because you shouldn’t need to have them.

3. Avoid setting dataset RecordNumber

Finally, don’t get into the habit of relying on the fact that TClientDataSet allows you to specify a value for RecordNumber, it is rarely a good idea and few dataset types support it.
If you want to go to a random record, better use

Dataset.First;
DataSet.MoveBy(Random(X));

I leave it to you to work out what the argument X to Random should be, to move to a valid, random, record, based on what the online help says about Random.

 
kvcomp
 
(2002-03-31 12:21)
[0]

Уже пятый день прошу помочь — никто не дает вразумительного ответа, или перевелись мастаки на Руси?!

Что за ошибка «At beginning of table», которая возникает при выполнении Table1.Edit; (записи в таблице есть)

P.S. Если можно, подробней. :)


 
Lusha
 
(2002-03-31 12:43)
[1]

Вот только на понт брать не надо, пожалуйста. Чтобы помочь Вам в такой ситуации, ее (ситуацию) нужно реализовать у себя. А это достаточно проблематично, если учесть, что Вы ровным счетом ничего не сказали как Вам удалось ее достичь…

Прежде всего убедитесь в целостности таблицы (запрос SELECT * FROM <имя таблицы> в Database Desktop и сравнение количества возвращенных строк заявленному при ее открытии…)

Как можно более полно укажите в своем вопросе

1. Какой компонент используется для доступа к данным TQuery, TTable etc.

2. Используется ли Cached Updates

3. Приведите пример кода с указанием обработчиков на событиях

И я думаю, что через некоторое время (гораздо меньшее, чем пять дней) Вы получите достаточно вразумительный ответ на свой вопрос (возможно даже из своих уст).


 
kvcomp
 
(2002-03-31 23:17)
[2]

1) TTable

2) не используется

3)

procedure TFSt.SpeedButton1Click(Sender: TObject);

begin

if Application.MessageBox(«Удалить эту фотографию?»,»Вопрос»,MB_OKCANCEL) <> IDOK then Exit;

TSt.Edit;

DBPhoto.Picture:=nil; объект TDBImage, связанный с граф. полем

TSt.Post;

end;

Для записей, которые не содержат в данный момент картинку в соответствующем поле, ошибки не возникает, а если я нажимаю на SpeedButton тогда, когда у меня в TDBGrid выбрана запись содержащая фото, возникает ошибка «At beginning of table», при выполнении TSt.Edit;


 
Lusha
 
(2002-04-01 09:14)
[3]

Сурово… :)

А почему бы не очищать поле таким образом…

Table1.Fields[DBPhoto.DataField].Clear; ?


 
kvcomp
 
(2002-04-01 19:55)
[4]

Дело в том, что до этой строки дело не доходит!

Я пошагово выполнял программу — ошибка именно на TSt.Edit;


 
Malder
 
(2002-04-02 00:22)
[5]

Э-э-э, я не понял кое-чего. Что такое DBPhoto ? Что за компонент ? Мне сейчас влом смотреть, но если есть такое в Delphi, то очень интересно, что в нем храниться ? Ссылка на картинку ? Тогда, что за фраза
Для записей, которые не содержат в данный момент картинку в соответствующем поле ? Если все таки в поле, связанном с DBPhoto храниться сам объект, а не ссылка на него, то что значит
DBPhoto.Picture:=nil ?

Разъясни ситуацию…


 
Lusha
 
(2002-04-02 09:03)
[6]

Есть ли какие нибудь обработчики на OnBeforeEdit?

Используется ли фильтр?

Проверьте количество записей в таблице непосредственно перед TSt.Edit.


 
Johnmen
 
(2002-04-02 09:24)
[7]

вероятно TSt.Open перед TSt.Edit


 
Lusha
 
(2002-04-02 09:28)
[8]

>Johnmen

Гы-гы. Об этом я как то не подумал… :)


 
Ka$per
 
(2002-04-02 09:44)
[9]

а не проще через SQL

«update table1 set foto=null where id=»value» «


 
Ромик
 
(2002-04-02 10:55)
[10]

Проверь, точно ли твой грид связан ИМЕННО с той таблицей, которой даешь Edit. А то может «бегаешь» по одному набору

данных, а ждешь что в другом позиция изменится.

Если хочешь — бросай проект с базой по мылу. У меня сегодня время есть, глядишь вместе разберемся


 
Mastadon
 
(2002-04-04 09:17)
[11]

Попробуй эту же запись отредактировать в Database Desktop

или SQL Explorer.Можеь сама таблица вылетила?

Если писать на локальных базах типа Paradox и DBase такое

очень часто случается особенно с Blob полями.


Студворк — интернет-сервис помощи студентам

Есть компоненты Clientdataset, Datasourse и DBgrid в связке. База сохранена в cds.
Ошибка возникает при запуске приложения, причем не указывает на строку в коде.

Может быть ошибка гдето здесь так как при откате ошибка изчезает (я коменчу эту часть кода и убираю cds файл из clientdataset1 из поля filename):

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  if s[1] = 'Y' then begin
      Delete(s, 1, 1);
      clientdataset1.Locate('Friend List',UpperCase(s),[]);
      clientdataset1.Edit;
      clientdataset1.Fields[0].AsString:=clientdataset1.Fields[0].AsString+' (online)';
      clientdataset1.post;
    end
    else
    begin
      Delete(s, 1, 1);
      clientdataset1.Locate('Friend List',UpperCase(s),[]);
      clientdataset1.Edit;
      clientdataset1.Fields[0].AsString:=clientdataset1.Fields[0].AsString+' (offline)';
      clientdataset1.post;
    end;

Не понимаю в чем ошибка, но если пропустить ее, то вроде дальше работает.

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    At beggining of Table?????

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Ребята выручайте. бьюсь уже какой час. Незнаю что и произошло. ранее эта процедура работала все ок. теперь вроде бы тоже, но при открытие созданной этой процедурой таблицы выскакивает эта ошибка «At beggining of Table». Что это за чепуха.
      procedure TFrame1.EnOkBClick(Sender: TObject);
      var
       Table2  : TTable;
      begin
      with Table1 do   begin
      Active:=False;
      FieldDefs.Update;
      IndexDefs.Update;
      Table2 :=TTable.Create(nil);
      Table2.TableName :=Edit3.Text;
      Table2.TableType := TableType;
      Table2.FieldDefs.Assign(FieldDefs);
      Table2.IndexDefs.Assign(IndexDefs);
      Table2.CreateTable;
      end;

      // процедура открытия таблицы
      procedure TFrame1.ComboBox1Change(Sender: TObject);
      begin
      DataSource1.DataSet:=Table1;
      Table1.Active:=false;
      Table1.TableType:=ttdBase;
      Table1.TableName:=ComboBox1.Text+’.dbf’;
      if TABLE1.TableName <>»  then begin
       Table1.Active:=true;
      end else
      if (Table1.Name <> ‘ ‘) or (Table1.Name  = ‘ ‘) then
      messagedlg(‘Строка пуста. Попробуйте еще раз’, mtinformation, [mbok], 0);
      end;


      pigas



      Сообщ.
      #2

      ,

        Может уже создана таблица с таким имененем


        pigas



        Сообщ.
        #3

        ,

          А если только при открытии — может ты Table2 и Table1 на один файл наташил


          vach



          Сообщ.
          #4

          ,

            Помоему тут мутняк какойто:
            if (Table1.Name <> ‘ ‘) or (Table1.Name  = ‘ ‘) then
            messagedlg(‘Строка пуста. Попробуйте еще раз’, mtinformation, [mbok], 0);
            end;

            (Table1.Name <> ‘ ‘) or (Table1.Name  = ‘ ‘) — всегда True

            А в какой строке это выскакивает?


            XXXX



            Сообщ.
            #5

            ,

              ВСЕ!!!!! Нашел в чем ошибка.
              Вообщем, я забыл, что у меня при открытии таблицы идет подсчет количества строк
              Вот он и выдает ошибку. Ведь At beginning of table — переводится как начало таблицы, то есть строк то нет.

              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

              0 пользователей:

              • Предыдущая тема
              • Базы данных: Общие вопросы
              • Следующая тема

              Рейтинг@Mail.ru

              [ Script execution time: 0,0258 ]   [ 15 queries used ]   [ Generated: 21.09.23, 09:55 GMT ]  

              INTELLIGENT WORK FORUMS
              FOR COMPUTER PROFESSIONALS

              Contact US

              Thanks. We have received your request and will respond promptly.

              Log In

              Come Join Us!

              Are you a
              Computer / IT professional?
              Join Tek-Tips Forums!

              • Talk With Other Members
              • Be Notified Of Responses
                To Your Posts
              • Keyword Search
              • One-Click Access To Your
                Favorite Forums
              • Automated Signatures
                On Your Posts
              • Best Of All, It’s Free!

              *Tek-Tips’s functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

              Posting Guidelines

              Promoting, selling, recruiting, coursework and thesis posting is forbidden.

              Students Click Here

              «At Beginning Of Table»

              «At Beginning Of Table»

              (OP)


              From time to time when I run my application through Delphi, I receive the message
                «At Beginning of Table — Hit ‘run’ to continue»
              I hit ‘run’ and the application continues to do its thing, but it is kind of annoying that this message comes up. With the EXE file, this error does not appear.

              It usually happens when I am attempting to post records to a table. Any thoughts?

              Red Flag Submitted

              Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
              The Tek-Tips staff will check this out and take appropriate action.

              Join Tek-Tips® Today!

              Join your peers on the Internet’s largest technical computer professional community.
              It’s easy to join and it’s free.

              Here’s Why Members Love Tek-Tips Forums:

              • Tek-Tips ForumsTalk To Other Members
              • Notification Of Responses To Questions
              • Favorite Forums One Click Access
              • Keyword Search Of All Posts, And More…

              Register now while it’s still free!

              Already a member? Close this window and log in.

              Join Us             Close

              Понравилась статья? Поделить с друзьями:

              Интересное по теме:

            • Delphi ошибка access violation at address in module
            • Delphi ошибка 1400
            • Delphi ошибка 12175
            • Delphi ошибка 10061
            • Delphi обратное распространение ошибки

            • 0 0 голоса
              Рейтинг статьи
              Подписаться
              Уведомить о
              guest

              0 комментариев
              Старые
              Новые Популярные
              Межтекстовые Отзывы
              Посмотреть все комментарии