Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать номер новой записи добавленой через... [D5, Win95/98, Win2k]


Knight ©   (2004-05-15 21:05:00) 

Query.SQL... ;
ExecSQL?

База Paradox.


sniknik   (2004-05-17 08:27:00) [1]

нравится так используй, но кто мешает совмешать и то и то? это в случае с SQL сервером таблицы - зло, а в варианте локальном/файл сервером нормально, даже наоборот лутше.

вот, если к примеру многопользовательский доступ, то в случае с SQL делаеш insert и следующей командой select max(id) ... (узнать) и никаких гарантий что между этими командами не вклинился второй юзер со своим инсертом...
а с табличным доступом ты останешся на той же записи, сколько бы соседи записей не добавили (или будет блокировка). в любом случае прочитаеш правильное значение.


Knight   (2004-05-17 01:46:00) [2]


> sniknik ©   (17.05.04 01:35)
> смысла от SQL большого
> нет раз на серверной стороне нет sql-ного движка.

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


sniknik   (2004-05-17 01:35:00) [3]

> Было бы поле не автоинкрементным не было бы и вопроса.
так оно у тебя автоинкремент, и ты его читать пытаешся?, тогда recno ни в коем случае использовать нельзя, наверняка будут несовпадения.

после записи читай это поле и все, по другому опасно. и кстати для парадокса (т.к. локальный или файл сервер) таблицами работать лутше. (имхо) во всяком случае смысла от SQL большого нет раз на серверной стороне нет sql-ного движка.


Knight   (2004-05-17 01:28:00) [4]


> [9] sniknik ©   (17.05.04 01:13)

Было бы поле не автоинкрементным не было бы и вопроса.

Переделаю вставку записей через Insert, используя либо TQuery в режиме TTable, либо просто TTable... хотелось - как лучше, а приходится - как всегда :)

Всем спасибо.


sniknik   (2004-05-17 01:14:00) [5]

сорри, имел в виду [0] а не [1]


sniknik   (2004-05-17 01:13:00) [6]

> Иногда ведь надо поместить какие-то данные в таблицу и взять номер новой записи, например из поля ID для размещения ещё где-то.
гораздо лутше (понятнее чем в [1]).
для ID можно использовать автоинкрементное (его же и ключом можно назначить)
если же нужно именно номер записи то у парадокса в таблицах(без фильтра и без включенного индекса) вполне TTable.RecNo работает. правда сразу после TTable.Append/TTable.Insert его не прочтеш неопределено еще (записи нет) читать надо после Post или до.
на самом деле и индекс с фильтром не помеха если помнить что выдается реальный номер записи а не отображаемый (перепутанный индексом)
а вот в SQL команды доступа к номеру нет.


Knight   (2004-05-16 23:47:00) [7]

>> SergP ©   (15.05.04 23:40)
> А вообще какой смысл узнавания номера записи? Для чего может пригодиться
> такая инфа?
Иногда ведь надо поместить какие-то данные в таблицу и взять номер новой записи, например из поля ID для размещения ещё где-то.

> Может лучше изменить алгоритм так чтобы не использовать эту инфу?
Например?

>> [6] SpartakVC   (16.05.04 02:54)
Это если в TQuery включить RequestLive...

to All
Неужели нет подобия mysql_insert_id()?


Плохиш   (2004-05-16 03:34:00) [8]

2Knight

Наводящий вопрос: Что такое, в Вашем понимании, "номер новой записи добавленой через..."?


SpartakVC   (2004-05-16 02:54:00) [9]

Не факт, что номер добавленной записи будет равен количеству записей, так как в упорядоченной по ключу таблице она встанет на своё место по порядку, тем более применение INSERT приведёт к вставке записи в позицию курсора набора данных. Что бы узнать её номер лучше после вставки найти её, например,
TTable.Locate(['Имя Поля'], 'Значение поля вставленной записи', []);
TTable.RowNumber - ето есть номер нашей записи.


jack128   (2004-05-15 23:59:00) [10]

с парадоксом не работал, но реляционная теория такого понятия как номер записи не знает ;-) Номер записи имеет какой то смысл в DataSet'e,  но не в таблице..


SergP   (2004-05-15 23:40:00) [11]


> А без открытия никак? Свойства там какие или ещё что?


Х/З . Не пробовал...

А вообще какой смысл узнавания номера записи? Для чего может пригодиться такая инфа?
Может лучше изменить алгоритм так чтобы не использовать эту инфу?

PS Что-то мастеров сегодня не видно.... Пьянствуют наверное... Базы - всегда была одной из лучших конференций в плане ответоспособности мастеров...


Knight   (2004-05-15 22:29:00) [12]

Так может проще через Insert?


Knight   (2004-05-15 22:04:00) [13]


> SergP ©   (15.05.04 21:48)

А без открытия никак? Свойства там какие или ещё что?


SergP   (2004-05-15 21:48:00) [14]

По идее номер добавленной записи должен быть равен общему числу записей в таблице:

with Query do
begin
  SQL.Text:='select count(*) as cnt from Mytable';
  Open;
  First;
  NumRecord:=FieldByName('cnt').AsInteger;
  Close;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо