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

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

Проследняя запись в таблице


Страницы:   1 2 3 4

Муслик ©   (2008-06-17 10:50:00) 

Скажите пожалуйста как узнать последнюю запись в таблице  (BDE)


Муслик   (2008-06-17 12:52:00) [21]

Ega23 ©так оно и есть. так оно и сделано! но проблема в том что я не могу вывести сделанную мной последнюю запись в базе


Поросенок Винни-Пух   (2008-06-17 12:51:00) [22]

Последняя запись эта та запись, которую я в программе ввёл "последней".

Зашибись.
местное время 12:50
вставляем запись.
меняем время на 12:00
вставляем запись.

Какая из них будет "последней"?


Ega23   (2008-06-17 12:49:00) [23]


> Так вот № Визы ввожится вручную но порядковы, но не сделан
> ключевым так как может идти не попорядку тоесть 00120 и
> сразу за ним 00122 вот для каждого Имени из первой таблицы
> присваивается номер Визы вот мне нужно вывести последнюю
> запись из таблицы 2 № Визы, но не отдельного Агента а всей
> таблицы 2 или вывести просто последнюю запись Визы


Так вот, для этого дела существует суррогатный ключ: есть ключевое поле-счётчик и есть поле "номер Визы" с уникальным индексом. Счетчик назначается автоматически самой СУБД и является первичным ключом. И ему пофиг на порядковые номера виз и другие поля. Номер визы вводится вручную, при этом уникальный индекс не даёт возможности ввести 2 одинаковых номера. И, кстати, он вообще строкой может (и ИМХО даже должен) являться.

Читать про проектирование БД.


Муслик   (2008-06-17 12:49:00) [24]

MsGuns ©при твоей функции она будит показывать сколько записей в таблице  Label1.Caption := IntToStr(GetMaxNumber(Table2)-1);


Муслик   (2008-06-17 12:45:00) [25]

Последняя запись эта та запись, которую я в программе ввёл "последней".
Если кинуть на форму ещё грид отдельно и задать ей номер визы без  индекса точнее не связывать её с первой таблицей она мне показывает все полностью запись № Визы я могу просмотреть последнюю запись но это не выход из положения я так думаю


MsGuns   (2008-06-17 12:43:00) [26]

Связка Мастер-Детал, очевидно, представлена "волшебными" компонентами 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:38:00) [27]

и что такое "последняя" запись при таком раскладе?


Anatoly Podgoretsky   (2008-06-17 12:38:00) [28]

> Муслик  (17.06.2008 12:22:33)  [33]

Так тут никакими последнеми записями и не пахнет.

ЗЫ: не ищи последнею запись, не зная что это такое, поскольку сказать не можешь. Сумеешь объяснить, что такое последнея запись, то возможно получишь ответ или категорическое НЕ


Муслик   (2008-06-17 12:22:00) [29]

Существует таблица 1 - [№, Имя, Сумма]
Таблица 2 (привзанная к первой) - [№ Визы, Дата, Сумма]
Так вот № Визы ввожится вручную но порядковы, но не сделан ключевым так как может идти не попорядку тоесть 00120 и сразу за ним 00122 вот для каждого Имени из первой таблицы присваивается номер Визы вот мне нужно вывести последнюю запись из таблицы 2 № Визы, но не отдельного Агента а всей таблицы 2 или вывести просто последнюю запись Визы


Anatoly Podgoretsky   (2008-06-17 12:16:00) [30]

> Муслик  (17.06.2008 12:15:31)  [31]

Тогда что такое последняя запись?


Муслик   (2008-06-17 12:15:00) [31]

СУБД Paradox.


Василий Жогарев   (2008-06-17 12:11:00) [32]

Сорри за разные ники... куки непотерты...


Anatoly Podgoretsky   (2008-06-17 12:09:00) [33]

> Игорь Шевченко  (17.06.2008 12:06:27)  [27]

Ну славо богу, а то я уже испугался за теорию РСУБД


андр.   (2008-06-17 12:09:00) [34]


> Anatoly Podgoretsky ©   (17.06.08 11:59) [25]

Несу ответственность точно также как и автор несет ответственность за свой вопрос, не указав используемую СУБД...


Игорь Шевченко   (2008-06-17 12:06:00) [35]

Anatoly Podgoretsky ©   (17.06.08 12:04) [26]

Нет, не вернет. Даже первую не вернет, потому что синтаксис запроса неверный


Anatoly Podgoretsky   (2008-06-17 12:04:00) [36]

> Игорь Шевченко  (17.06.2008 11:55:24)  [24]

И что вернет последнею запись в Таблице, а что у у Оракла есть такое понятие и что на это никакак не влияет примененый ORDER BY


Anatoly Podgoretsky   (2008-06-17 11:59:00) [37]

> Василий Жогарев  (17.06.2008 11:54:23)  [23]

Ты несешь ответственность за свои слова или как?
Или ты телепат, не зная ни чего о базе такое заявить.
Садись два.


Игорь Шевченко   (2008-06-17 11:55:00) [38]


> Может ты хотел сказать: SELECT TOP 1 * FROM [TABLE] ORDER
> BY [FIELD] DESC


Для СУБД Oracle в самый раз


Василий Жогарев   (2008-06-17 11:54:00) [39]


>  Проследняя запись в таблице
>
> Муслик   (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))


Anatoly Podgoretsky   (2008-06-17 11:44:00) [40]


> Ещё раз спрашиваю какая СУБД и есть ли ключевое поле.

Читать [15] и [18]


Страницы:   1 2 3 4

Наверх

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