Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Вниз
Как узнать номер новой записи добавленой через... Найти похожие ветки
← →
Knight © (2004-05-15 21:05) [0]Query.SQL... ;
ExecSQL?
База Paradox.
← →
SergP © (2004-05-15 21:48) [1]По идее номер добавленной записи должен быть равен общему числу записей в таблице:
with Query do
begin
SQL.Text:="select count(*) as cnt from Mytable";
Open;
First;
NumRecord:=FieldByName("cnt").AsInteger;
Close;
end;
← →
Knight © (2004-05-15 22:04) [2]
> SergP © (15.05.04 21:48)
А без открытия никак? Свойства там какие или ещё что?
← →
Knight © (2004-05-15 22:29) [3]Так может проще через Insert?
← →
SergP © (2004-05-15 23:40) [4]
> А без открытия никак? Свойства там какие или ещё что?
Х/З . Не пробовал...
А вообще какой смысл узнавания номера записи? Для чего может пригодиться такая инфа?
Может лучше изменить алгоритм так чтобы не использовать эту инфу?
PS Что-то мастеров сегодня не видно.... Пьянствуют наверное... Базы - всегда была одной из лучших конференций в плане ответоспособности мастеров...
← →
jack128 © (2004-05-15 23:59) [5]с парадоксом не работал, но реляционная теория такого понятия как номер записи не знает ;-) Номер записи имеет какой то смысл в DataSet"e, но не в таблице..
← →
SpartakVC (2004-05-16 02:54) [6]Не факт, что номер добавленной записи будет равен количеству записей, так как в упорядоченной по ключу таблице она встанет на своё место по порядку, тем более применение INSERT приведёт к вставке записи в позицию курсора набора данных. Что бы узнать её номер лучше после вставки найти её, например,
TTable.Locate(["Имя Поля"], "Значение поля вставленной записи", []);
TTable.RowNumber - ето есть номер нашей записи.
← →
Плохиш (2004-05-16 03:34) [7]2Knight
Наводящий вопрос: Что такое, в Вашем понимании, "номер новой записи добавленой через..."?
← →
Knight © (2004-05-16 23:47) [8]>> SergP © (15.05.04 23:40)
> А вообще какой смысл узнавания номера записи? Для чего может пригодиться
> такая инфа?
Иногда ведь надо поместить какие-то данные в таблицу и взять номер новой записи, например из поля ID для размещения ещё где-то.
> Может лучше изменить алгоритм так чтобы не использовать эту инфу?
Например?
>> [6] SpartakVC (16.05.04 02:54)
Это если в TQuery включить RequestLive...
to All
Неужели нет подобия mysql_insert_id()?
← →
sniknik © (2004-05-17 01:13) [9]> Иногда ведь надо поместить какие-то данные в таблицу и взять номер новой записи, например из поля ID для размещения ещё где-то.
гораздо лутше (понятнее чем в [1]).
для ID можно использовать автоинкрементное (его же и ключом можно назначить)
если же нужно именно номер записи то у парадокса в таблицах(без фильтра и без включенного индекса) вполне TTable.RecNo работает. правда сразу после TTable.Append/TTable.Insert его не прочтеш неопределено еще (записи нет) читать надо после Post или до.
на самом деле и индекс с фильтром не помеха если помнить что выдается реальный номер записи а не отображаемый (перепутанный индексом)
а вот в SQL команды доступа к номеру нет.
← →
sniknik © (2004-05-17 01:14) [10]сорри, имел в виду [0] а не [1]
← →
Knight © (2004-05-17 01:28) [11]
> [9] sniknik © (17.05.04 01:13)
Было бы поле не автоинкрементным не было бы и вопроса.
Переделаю вставку записей через Insert, используя либо TQuery в режиме TTable, либо просто TTable... хотелось - как лучше, а приходится - как всегда :)
Всем спасибо.
← →
sniknik © (2004-05-17 01:35) [12]> Было бы поле не автоинкрементным не было бы и вопроса.
так оно у тебя автоинкремент, и ты его читать пытаешся?, тогда recno ни в коем случае использовать нельзя, наверняка будут несовпадения.
после записи читай это поле и все, по другому опасно. и кстати для парадокса (т.к. локальный или файл сервер) таблицами работать лутше. (имхо) во всяком случае смысла от SQL большого нет раз на серверной стороне нет sql-ного движка.
← →
Knight © (2004-05-17 01:46) [13]
> sniknik © (17.05.04 01:35)
> смысла от SQL большого
> нет раз на серверной стороне нет sql-ного движка.
SQL мне нравится, удобством создания таблиц, сортировки, выборки, соединения данных из разных таблиц и т.п.
← →
sniknik © (2004-05-17 08:27) [14]нравится так используй, но кто мешает совмешать и то и то? это в случае с SQL сервером таблицы - зло, а в варианте локальном/файл сервером нормально, даже наоборот лутше.
вот, если к примеру многопользовательский доступ, то в случае с SQL делаеш insert и следующей командой select max(id) ... (узнать) и никаких гарантий что между этими командами не вклинился второй юзер со своим инсертом...
а с табличным доступом ты останешся на той же записи, сколько бы соседи записей не добавили (или будет блокировка). в любом случае прочитаеш правильное значение.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.046 c