Главная страница
    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.47 MB
Время: 0.042 c
2-1136548967
IK
2006-01-06 15:02
2006.01.22
WinWORD


2-1136323169
!Han!
2006-01-04 00:19
2006.01.22
ООП


3-1132388654
888
2005-11-19 11:24
2006.01.22
Обнулить счетчик


3-1132829235
FesSumy
2005-11-24 13:47
2006.01.22
F1! Экспорт из DBF в XML.


3-1132682236
tyo
2005-11-22 20:57
2006.01.22
ProgressBar во время ExecProc





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