Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

Как узнать максимальное значение в поле таблицы   Найти похожие ветки 

 
pavel_guzhanov ©   (2005-12-29 09:35) [0]

для получения максимального значения делаю так:
 Q.Close;
 Q.SQL.Clear;
 Q.SQL.Add("Select max(IdTrackt) from Groups");
 Q.Open;

Теперь мне надо полученное максимальное значение присвоить переменной Id типа Integer. Как это сделать?
PS использую ADO


 
seg   (2005-12-29 09:41) [1]

Присвоитять явное имя поля

Q.SQL.Add("Select max(IdTrackt) as IdTrackt from Groups");

получить значение.

id:=q.fieldbyname("IdTract).value;


 
evvcom ©   (2005-12-29 09:58) [2]


>  Q.SQL.Clear;
>  Q.SQL.Add("Select max(IdTrackt) from Groups");

А это нафиг? В design-time этого нельзя сделать?


 
Lexer ©   (2005-12-29 10:20) [3]

Id := Q.fields[0].AsInteger


 
Ega23 ©   (2005-12-29 10:50) [4]

Вообще-то правильно будет
Select MaxID=Max(IsNull(ID), 0) from ....


 
Desdechado ©   (2005-12-29 11:18) [5]

если уж речь об ID пошла, что что-то подозрительно
генерить идешники таким алгоритмом - зло!


 
Vlad ©   (2005-12-29 11:37) [6]


> Ega23 ©   (29.12.05 10:50) [4]



> Select MaxID=Max(IsNull(ID), 0) from ....


По-моему применение IsNull тут явно лишне :-)


 
Ega23 ©   (2005-12-29 11:41) [7]


> По-моему применение IsNull тут явно лишне :-)


Почему? Если нету ни одной записи, то при
Id := Q.fields[0].AsInteger
или
id:=q.fieldbyname("IdTract).value;
нарвёшься на exception.
Ну или на клиенте на Null значение поля проверять.


 
Vlad ©   (2005-12-29 11:58) [8]


> Ega23 ©   (29.12.05 11:41) [7]


> нарвёшься на exception.

мы про D7 говорим? Так он Null  к 0 преобразует, как только ты его в переменную считаешь. Вроде не должно там быть никаких эксепшенов, насколько я помню...
В .Net была такая проблема.


 
Ega23 ©   (2005-12-29 12:12) [9]


> мы про D7 говорим? Так он Null  к 0 преобразует, как только
> ты его в переменную считаешь.


Я про D5 говорил. Хотя, конечно, такой вариант генерации ID весьма небезопасен. Получить максимальное значение, передать на клиент, а потом вставку с полученным ID делать. Можно, но только в рамках одной транзакции.


 
Vlad ©   (2005-12-29 12:30) [10]


> Ega23 ©   (29.12.05 12:12) [9]

С D5 давненько не работал, но по-моему он так же Null-ы преобразовывал.
Ну а такой способ генерации ID конечно совсем не безопасен, это факт...
Разве что из-под DOS в однопользовательском приложении :-)


 
Vlad ©   (2005-12-29 12:48) [11]

Кстати говоря, я что-то не подумал про свойство Value. С ним действительно будет ошибка.
Но если использовать .AsInteger, то будет 0 :-)


 
pavel_guzhanov ©   (2005-12-29 13:04) [12]

а есть какое-нибудь ограничение на количество параметров в запросе "Insert INTO"? У меня в запросе 17 параметров получается. Вроде запрос правильно составлен, с типами не напутал, а при выполнении выдается ошибка "Ошибка синтаксиса Insert Into@" Может это быть из-за большого количества параметров?


 
pavel_guzhanov ©   (2005-12-29 13:13) [13]

запрос такой:
insert into Table1 (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10, Field11, Field12, Field13, Field14, Field15, Field16, Field17) values (:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :l, :m, :n, :o, :p, :q)

далее
 QInsert.Parameters[0].Value:=Q.Fields[0].AsInteger;  
 QInsert.Parameters[1].Value:=MainForm.E1.Text;
 QInsert.Parameters[2].Value:=1;
 QInsert.Parameters[3].Value:=5;
 QInsert.Parameters[4].Value:=StrToInt(MainForm.E2.Text);
 QInsert.Parameters[5].Value:=MainForm.E3.Text;
 QInsert.Parameters[6].Value:=0;
 QInsert.Parameters[7].Value:=0;
 QInsert.Parameters[8].Value:=0;
 QInsert.Parameters[9].Value:=0;
 QInsert.Parameters[10].Value:=0;
 QInsert.Parameters[11].Value:=0;
 QInsert.Parameters[12].Value:=1;  
 QInsert.Parameters[13].Value:=1;
 QInsert.Parameters[14].Value:=2;
 QInsert.Parameters[15].Value:=3;
 QInsert.Parameters[16].Value:=5;


Field2 и Field6 - текстовые, остальные числовые .

Не пойму, где тут ошибка синтаксиса...



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.031 c
2-1136670705
Igorioha
2006-01-08 00:51
2006.01.22
Объявление переменной


8-1123915661
Grief
2005-08-13 10:47
2006.01.22
_Release для D3D


14-1135662091
begin...end
2005-12-27 08:41
2006.01.22
С Днём рождения! 27 декабря


14-1135328525
Дева
2005-12-23 12:02
2006.01.22
не понимаю! Как войти в форум под своим именем?


9-1123252920
Андрей235
2005-08-05 18:42
2006.01.22
Карточная игра "дурак





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский