Форум: "Начинающим";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
ВнизПроследняя запись в таблице Найти похожие ветки
← →
Муслик (2008-06-17 10:50) [0]Скажите пожалуйста как узнать последнюю запись в таблице (BDE)
← →
Ega23 © (2008-06-17 10:51) [1]На сервере? На клиенте? СУБД какая? Ключевое поле есть?
← →
Правильный-Вася (2008-06-17 10:52) [2]Table.Last
← →
affonya (2008-06-17 10:52) [3]select * from table order by desc;
← →
Поросенок Винни-Пух © (2008-06-17 10:52) [4]что значит "узнать"?
в лицо что ли? или по запаху?
← →
Ega23 © (2008-06-17 10:53) [5]
> select * from table order by desc;
За такое сразу оторвать гениталии. Дабы всемирный генофонд не портить.
← →
Муслик (2008-06-17 10:53) [6]огромное спасибо Спасибо! to Поросенок Винни-Пух по левой пятке!
← →
Поросенок Винни-Пух © (2008-06-17 10:54) [7]тебя надули. там нет последней записи в принципе.
← →
affonya (2008-06-17 10:59) [8]то ega
хе хе , но вариант то верный .. проверьте -) а Table.Last; тоже поидее работать будет.
select max(id) from table - последняя запись
← →
Муслик (2008-06-17 11:04) [9]а почему не работает
panel3.Caption:= IntToStr(table3.Last);
← →
Sergey13 © (2008-06-17 11:05) [10]> [9] Муслик (17.06.08 11:04)
Потому что надо
panel3.Caption:= "Левая пятка";
← →
Поросенок Винни-Пух © (2008-06-17 11:06) [11]пипец что называется.
← →
Муслик (2008-06-17 11:07) [12]Я понимаю что это глупо но мне надо выводить последнюю запись
← →
Поросенок Винни-Пух © (2008-06-17 11:08) [13]"узнавать", "выводить"
странные у тебя желания :)))
← →
Муслик (2008-06-17 11:14) [14]Хорошо поставлю вопрос понятней... есть 3 таблицы 1 ко многим... так вот у каждой записи есть свой номер вот мне нужно присвойитть зфтуд последнюю запись ячейки
← →
Anatoly Podgoretsky © (2008-06-17 11:19) [15]Да у тебя ни базы, ни таблиц нет, иначе бы давно похвастался этим.
← →
Поросенок Винни-Пух © (2008-06-17 11:20) [16]свой номер-то в поле находится.
вот его значение и выводи.
← →
Ega23 © (2008-06-17 11:20) [17]
> хе хе , но вариант то верный .. проверьте -)
Даю вводную: есть таблица, в ней миллион записей. Каждая запись состоит из 20 полей. В трёх из них - лежат BLOBы, каждый не менее мегабайта.
А теперь выполняй свой вариант нахождения последнего id.
To Аффтар:
Ещё раз спрашиваю какая СУБД и есть ли ключевое поле.
← →
Муслик (2008-06-17 11:26) [18]BDE. В том то и дело что ключевого поля нет...
← →
Поросенок Винни-Пух © (2008-06-17 11:30) [19]оно здесь все равно мало чем поможет.
ну допустим ключ там фамилия имя отчество.
и чего?
← →
Ega23 © (2008-06-17 11:38) [20]
> ну допустим ключ там фамилия имя отчество.
Тогда надо другую стратегию выбирать. Был бы ключ с счетчиком - можно было бы через MAX сработать.
← →
Игорь Шевченко © (2008-06-17 11:41) [21]Субд BDE не существует
← →
Anatoly Podgoretsky © (2008-06-17 11:44) [22]
> Ещё раз спрашиваю какая СУБД и есть ли ключевое поле.
Читать [15] и [18]
← →
Василий Жогарев © (2008-06-17 11:54) [23]
> Проследняя запись в таблице
>
> Муслик (17.06.08 10:50)
> Скажите пожалуйста как узнать последнюю запись в таблице
> (BDE)
Ответ1:
> Правильный-Вася (17.06.08 10:52) [2]
> Table.Last
Ответ2:
> affonya (17.06.08 10:52) [3]
> select * from table order by desc;
ЗЫ
Может ты хотел сказать:SELECT TOP 1 * FROM [TABLE] ORDER BY [FIELD] DESC
Ответ 3:
> affonya (17.06.08 10:59) [8]
> то ega
> хе хе , но вариант то верный .. проверьте -) а Table.Last;
> тоже поидее работать будет.
>
> select max(id) from table - последняя запись
Только наверное:SELECT *
FROM [TABLE] t
WHERE (Kod IN
(SELECT MAX(Kod) AS Kod
FROM [TABLE] AS d
WHERE (t.[Field] = d.[Field])))
или по дате...SELECT *
FROM [TABLE] t
WHERE ([Date] = (SELECT MAX([Date]) AS [Date] FROM [TABLE] d))
← →
Игорь Шевченко © (2008-06-17 11:55) [24]
> Может ты хотел сказать: SELECT TOP 1 * FROM [TABLE] ORDER
> BY [FIELD] DESC
Для СУБД Oracle в самый раз
← →
Anatoly Podgoretsky © (2008-06-17 11:59) [25]> Василий Жогарев (17.06.2008 11:54:23) [23]
Ты несешь ответственность за свои слова или как?
Или ты телепат, не зная ни чего о базе такое заявить.
Садись два.
← →
Anatoly Podgoretsky © (2008-06-17 12:04) [26]> Игорь Шевченко (17.06.2008 11:55:24) [24]
И что вернет последнею запись в Таблице, а что у у Оракла есть такое понятие и что на это никакак не влияет примененый ORDER BY
← →
Игорь Шевченко © (2008-06-17 12:06) [27]Anatoly Podgoretsky © (17.06.08 12:04) [26]
Нет, не вернет. Даже первую не вернет, потому что синтаксис запроса неверный
← →
андр. (2008-06-17 12:09) [28]
> Anatoly Podgoretsky © (17.06.08 11:59) [25]
Несу ответственность точно также как и автор несет ответственность за свой вопрос, не указав используемую СУБД...
← →
Anatoly Podgoretsky © (2008-06-17 12:09) [29]> Игорь Шевченко (17.06.2008 12:06:27) [27]
Ну славо богу, а то я уже испугался за теорию РСУБД
← →
Василий Жогарев © (2008-06-17 12:11) [30]Сорри за разные ники... куки непотерты...
← →
Муслик (2008-06-17 12:15) [31]СУБД Paradox.
← →
Anatoly Podgoretsky © (2008-06-17 12:16) [32]> Муслик (17.06.2008 12:15:31) [31]
Тогда что такое последняя запись?
← →
Муслик (2008-06-17 12:22) [33]Существует таблица 1 - [№, Имя, Сумма]
Таблица 2 (привзанная к первой) - [№ Визы, Дата, Сумма]
Так вот № Визы ввожится вручную но порядковы, но не сделан ключевым так как может идти не попорядку тоесть 00120 и сразу за ним 00122 вот для каждого Имени из первой таблицы присваивается номер Визы вот мне нужно вывести последнюю запись из таблицы 2 № Визы, но не отдельного Агента а всей таблицы 2 или вывести просто последнюю запись Визы
← →
Anatoly Podgoretsky © (2008-06-17 12:38) [34]> Муслик (17.06.2008 12:22:33) [33]
Так тут никакими последнеми записями и не пахнет.
ЗЫ: не ищи последнею запись, не зная что это такое, поскольку сказать не можешь. Сумеешь объяснить, что такое последнея запись, то возможно получишь ответ или категорическое НЕ
← →
Поросенок Винни-Пух © (2008-06-17 12:38) [35]и что такое "последняя" запись при таком раскладе?
← →
MsGuns © (2008-06-17 12:43) [36]Связка Мастер-Детал, очевидно, представлена "волшебными" компонентами TTable
Тяжелый случай.
Для того, чтобы в детале найти тот самый "последний номер" есть два способа
1) При наличии индекса у детала на этот самый "последний номер" активировать этот индекс и тогда использовать метод Table2.Last, а затем уже
Label1.Caption := Table2.FieldByName(<Имя поля с номером>).AsString;
2)Если индекса нет, то сканировать весь детал в поисках наибольшего значения пресловутого поля:
function TForm1.GetMaxNumber(DataSet: TDataSet) : integer;
var
bm: TBookMark;
begin
result := -1;
with DataSet do
begin
bm := GetBookMark;
DisableControls;
First;
While Not Eof do
begin
if FieldByName(<Имя поля с номером>).AsInteger>result then
result := FieldByName(<Имя поля с номером>).AsInteger;
Next;
end;
GoToBookMark(bm);
FreeBookMark(bm);
EnableControls;
end;
end;
Обращение:
Label1.Caption := IntToStr(GetMaxNumber(Table2));
Но вообще все это уродливо, начиная от парадокса, продолжная отсутствием ключей и заканчивая TTable
← →
Муслик (2008-06-17 12:45) [37]Последняя запись эта та запись, которую я в программе ввёл "последней".
Если кинуть на форму ещё грид отдельно и задать ей номер визы без индекса точнее не связывать её с первой таблицей она мне показывает все полностью запись № Визы я могу просмотреть последнюю запись но это не выход из положения я так думаю
← →
Муслик (2008-06-17 12:49) [38]MsGuns © при твоей функции она будит показывать сколько записей в таблице Label1.Caption := IntToStr(GetMaxNumber(Table2)-1);
← →
Ega23 © (2008-06-17 12:49) [39]
> Так вот № Визы ввожится вручную но порядковы, но не сделан
> ключевым так как может идти не попорядку тоесть 00120 и
> сразу за ним 00122 вот для каждого Имени из первой таблицы
> присваивается номер Визы вот мне нужно вывести последнюю
> запись из таблицы 2 № Визы, но не отдельного Агента а всей
> таблицы 2 или вывести просто последнюю запись Визы
Так вот, для этого дела существует суррогатный ключ: есть ключевое поле-счётчик и есть поле "номер Визы" с уникальным индексом. Счетчик назначается автоматически самой СУБД и является первичным ключом. И ему пофиг на порядковые номера виз и другие поля. Номер визы вводится вручную, при этом уникальный индекс не даёт возможности ввести 2 одинаковых номера. И, кстати, он вообще строкой может (и ИМХО даже должен) являться.
Читать про проектирование БД.
← →
Поросенок Винни-Пух © (2008-06-17 12:51) [40]Последняя запись эта та запись, которую я в программе ввёл "последней".
Зашибись.
местное время 12:50
вставляем запись.
меняем время на 12:00
вставляем запись.
Какая из них будет "последней"?
← →
Муслик (2008-06-17 12:52) [41]Ega23 © так оно и есть. так оно и сделано! но проблема в том что я не могу вывести сделанную мной последнюю запись в базе
← →
MsGuns © (2008-06-17 12:52) [42]>Муслик (17.06.08 12:49) [38]
>MsGuns © при твоей функции она будит показывать сколько записей в таблице
Я пошел курить..
;(((
← →
Поросенок Винни-Пух © (2008-06-17 12:53) [43]проблема в том, что ты не хочешь верить в то, что нет "последней" записи.
← →
Ega23 © (2008-06-17 12:53) [44]
> меняем время на 12:00
Зачем? Ждём перехода на зимнее время... :)
В Казахстане - прокатит, у нас - нет. :)
← →
Поросенок Винни-Пух © (2008-06-17 12:54) [45]а есть только записи, удовлетворяющие значениями своих полей определенным критериям. других просто нет.
← →
MsGuns © (2008-06-17 12:55) [46]Парни, поберегите бисер !
← →
Муслик (2008-06-17 12:55) [47]Поросенок Винни-Пух1. делофтом что номера тольео растут тоесть
00012 0013 0014 0015 0017 > 0011 никогда не будит...
2. После того как происходит запись в таблицу порядковый номер присваивается к последней записи и она автоматически становится последней.
← →
Поросенок Винни-Пух © (2008-06-17 12:57) [48]вот и ищи свою запись по значению этого поля.
← →
Василий Жогарев © (2008-06-17 12:58) [49]
> Муслик (17.06.08 12:45) [37]
> Последняя запись эта та запись, которую я в программе ввёл
> "последней".
Ну эт смотря "по чем" последняя... Может быть последней записью в таблице по коду, а может и по полю какой либо даты...
← →
Муслик (2008-06-17 12:59) [50]Поросенок Винни-Пух ©
Взять первую таблицу вней 10 человек... по отдельности я могу найти легко последнюю запись для каждого человека, но проблема в том как найти последнюю запись "вообще" к примеру она у 4 человека была последней.
← →
Муслик (2008-06-17 13:00) [51]Василий Жогарев © по коду
← →
Anatoly Podgoretsky © (2008-06-17 13:03) [52]> Муслик (17.06.2008 12:45:37) [37]
Ну вот теперь есть определение, вот тогда и ответ, узнать последнею запись в Парадокс нельзя, он пишет в произвольное место, и только если пустого места нет, то пишет в конец таблицы. Поэтому узнать последнею введеную запись нельзя.
Но можно сделать поле/поля дата ввода/дата последнего изменения и тут задача становится уже детерминированой.
Но чувстую, что с такими знаниями, столько народу без виз останется.
У тебя есть защита в лице влиятельных родственников? Пригодится.
← →
Anatoly Podgoretsky © (2008-06-17 13:04) [53]> Ega23 (17.06.2008 12:49:39) [39]
> при этом уникальный индекс не даёт возможности ввести 2 одинаковых номера.
Парадокс позволяет, очень характерная для него ошибка.
← →
Василий Жогарев © (2008-06-17 13:05) [54]
> Муслик (17.06.08 13:00) [51]
Тогда тебе вот это надо:SELECT *
FROM [TABLE] t
WHERE (Kod IN
(SELECT MAX(Kod) AS Kod
FROM [TABLE] AS d
WHERE (t.[Field] = d.[Field])))
Только наверное придется смодифицировать под твою СУБД.
← →
Поросенок Винни-Пух © (2008-06-17 13:05) [55]не повезло тебе суслик.
еще раз для упертых: последней записи нет и найти её нельзя.
← →
Anatoly Podgoretsky © (2008-06-17 13:05) [56]> Поросенок Винни-Пух (17.06.2008 12:51:40) [40]
Руки прочь от времени, что у вас каждый Винни-Бомж может делать такую гадость?
Администратора срочно заменить.
← →
Anatoly Podgoretsky © (2008-06-17 13:06) [57]> MsGuns (17.06.2008 12:52:42) [42]
Поделись, надеюсь трава не хуже чем у автора.
← →
Ega23 © (2008-06-17 13:09) [58]
> Парадокс позволяет, очень характерная для него ошибка.
Откровенно говоря, Paradox - то последнее, что я буду использовать в качестве СУБД. По мне, так XML даже проще...
← →
Anatoly Podgoretsky © (2008-06-17 13:25) [59]> Поросенок Винни-Пух (17.06.2008 12:53:43) [43]
Есть, но не для этой СУБД
← →
Dennis I. Komarov © (2008-06-17 13:50) [60]Все это очень грусно :(
Недавно сталкнулся с ситуацией: при наличии билета на самолет мест в нем было, т.е. количество пасажиров (а так же проданых билетов) было больше чем оно может быть. Ко всему этому некоторых пасажиров не было в списках и сажать их на самолет не хотели. Дальше продолжать не буду но...
ПРЕЖДЕ ЧЕМ БРАТЬСЯ ЗА ТАКОЕ... (Дальше слов нет, одни эмоции)
Sorry за офф :(((
← →
MsGuns © (2008-06-17 16:03) [61]>Ega23 © (17.06.08 13:09) [58]
>Откровенно говоря, Paradox - то последнее, что я буду использовать в качестве >СУБД. По мне, так XML даже проще...
Ага, а главное просто летает по сравнению с парадоксом ;)
PS. Не бывает кривых молотков, бывают кривые руки, глаза, мозги и т.д.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.067 c