Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1195486930
dreamse
2007-11-19 18:42
2008.07.20
Как запретить завершать свой приложение?


2-1214204601
lewka-serdceed
2008-06-23 11:03
2008.07.20
Дополнительеая информация о файле


2-1212745836
uno-84
2008-06-06 13:50
2008.07.20
Запись файла в блоб массив


6-1190538786
WhiteWolf
2007-09-23 13:13
2008.07.20
скачивание файла с сайта в котором требуеться подтверждение кода


15-1212562601
БарЛог
2008-06-04 10:56
2008.07.20
И еще раз о корзине в магазине...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский