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 | ||
|
Не понимаю в чем ошибка, но если пропустить ее, то вроде дальше работает.
|
|
|
At beggining of Table?????
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Ребята выручайте. бьюсь уже какой час. Незнаю что и произошло. ранее эта процедура работала все ок. теперь вроде бы тоже, но при открытие созданной этой процедурой таблицы выскакивает эта ошибка «At beggining of Table». Что это за чепуха. // процедура открытия таблицы |
pigas |
|
Может уже создана таблица с таким имененем |
pigas |
|
А если только при открытии — может ты Table2 и Table1 на один файл наташил |
vach |
|
Помоему тут мутняк какойто: (Table1.Name <> ‘ ‘) or (Table1.Name = ‘ ‘) — всегда True А в какой строке это выскакивает? |
XXXX |
|
ВСЕ!!!!! Нашел в чем ошибка. |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Базы данных: Общие вопросы
- Следующая тема
[ 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 It usually happens when I am attempting to post records to a table. Any thoughts? Red Flag SubmittedThank you for helping keep Tek-Tips Forums free from inappropriate posts. |
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:
Talk 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