Текущий архив: 2005.07.31;
Скачать: CL | DM;
ВнизКак получить значение автоинкрементного поля? Найти похожие ветки
← →
Algiz © (2005-06-16 11:30) [0]Подскажите, пожалуйста, как программно получить значение автоинкрементного поля?
← →
Sergey13 © (2005-06-16 11:34) [1]Прочитать его после вставки.
← →
Algiz © (2005-06-16 11:56) [2]А можно написать как это долно выглядеть?...
Пробовал так, но что то не получается((
aut:=Table1.FieldByName("Num").Value;
← →
Dummes (2005-06-16 12:02) [3]Table1.Last;
nm :=Table1Num.Value;
← →
Sergey13 © (2005-06-16 12:02) [4]2[2] Algiz © (16.06.05 11:56)
А как не получается то? Ошибка что ли? Какая?
Надо спозиционироваться на эту запись и сделать
aut:=Table1.FieldByName("Num").asInteger;
Или запросом
select max(Num) as max_num from table_name
и прочитать значение.
aut:=Query1.FieldByName("max_Num").asInteger;
← →
Dummes (2005-06-16 12:03) [5]...Или запросом
select*...
Order By desk
← →
Dummes (2005-06-16 12:08) [6]Ошибка синтаксиса:
..ORDER BY YY DESC
← →
Sergey13 © (2005-06-16 12:09) [7]2[6] Dummes (16.06.05 12:08)
>Ошибка синтаксиса:
Это не синтаксис. Это консерватория. 8-)
← →
Algiz © (2005-06-16 12:12) [8]to Dummes (16.06.05 12:02)
Попробовал как ты посоветовал. Вылетает такая ошибка.
Project Project1.exe raised exception class EConvertError with message """ is not a valid integer value".
С aut:=Table1.FieldByName("Num").asInteger; аналогичная ситуация.
← →
Sergey13 © (2005-06-16 12:18) [9]2[8] Algiz © (16.06.05 12:12)
А как ты вставляешь запись можно увидеть? Ты наверное Post не сделал.
← →
Dummes (2005-06-16 12:20) [10]Значит Ваш aut объявлен не правильно!
(aut:=Table1.FieldByName("Num").Value;)
EConvertError with message """ is not a valid integer value".
Протестировать можно так:
var
i:Integerl;
...
DisbleControls;
while not TAble1.eof do
begin
inc(i);
TAble1.next
end;
EnableControls;
← →
Algiz © (2005-06-16 13:18) [11]Часть кода процедуры.
frmMain.Table1.Append; // Добавление новой записи в конец таблицы
// Общие данные
frmMain.Table1.FieldByName("Fam").AsString:=Edit1.Text;
frmMain.Table1.FieldByName("Fam").AsString:=Edit1.Text;
frmMain.Table1.FieldByName("Name").AsString:=Edit2.Text;
frmMain.Table1.FieldByName("Otch").AsString:=Edit3.Text;
frmMain.Table1.FieldByName("Komnata").AsInteger:=StrToInt(Edit4.Text);
frmMain.Table1.FieldByName("Floor").AsString:=ComboBox1.Text;
frmMain.Table1.FieldByName("DataZ").AsString:=DateToStr(DateTimePicker1.DateTime);
frmMain.Table1.FieldByName("Lgota").AsString:=Edit5.Text;
frmMain.Table1.FieldByName("DataV").AsString:=DateToStr(DateTimePicker2.DateTime);
frmMain.Table1.Post;
frmMain.Table1.Last;
j := frmMain.Table1Num.Value;
frmMain.Label4.Caption:= IntToStr(j);
← →
Sergey13 © (2005-06-16 13:27) [12]2 [11] Algiz © (16.06.05 13:18)
Если между
frmMain.Table1.Post;
И
frmMain.Table1.Last;
Ничего больше нет, то второе лишнее. Где то с типами напортачил, ИМХО. Какого типа Num в датасете? Какого типа j?
Я бы все таки посоветовал явное преобразование FieldByName("Num").asInteger. А так, вроде криминала не видно.
← →
Algiz © (2005-06-16 13:38) [13]Между ничего нету. Num - AutoInc, j - integer. Пробовал, все равно не выходит.
← →
Sergey13 © (2005-06-16 13:42) [14]А обработчиков на Table1 никаких не висит?
← →
Algiz © (2005-06-16 13:46) [15]нет, не висит.
← →
Algiz © (2005-06-16 13:53) [16]Все бы ничего, но мне к вечеру сегодня надо её доделать и сдать, а что и как доделывать даже и не знаю..
← →
Anatoly Podgoretsky © (2005-06-16 14:00) [17]А этому frmMain.Table1.Last;
кто тебя научил?
← →
Sergey13 © (2005-06-16 14:02) [18]CachedUpdates какой у Table1 ?
← →
Algiz © (2005-06-16 14:03) [19]to Anatoly Podgoretsky © (16.06.05 14:00)
А что это не правильно? Это выше подсказали...
← →
Algiz © (2005-06-16 14:04) [20]to Sergey13 © (16.06.05 14:02)
false
← →
Anatoly Podgoretsky © (2005-06-16 14:06) [21]Algiz © (16.06.05 14:03) [19]
Сказать, что делать с такими советчиками?
← →
Algiz © (2005-06-16 14:09) [22]Anatoly Podgoretsky © (16.06.05 14:06) [21]
Я в принципе могу догадаться)) А у Вас есть совет какой-нибудь?
← →
size=20 (2005-06-16 14:31) [23]select max(id) from table
← →
Anatoly Podgoretsky © (2005-06-16 14:41) [24]Algiz © (16.06.05 14:09) [22]
Ты например игнорировал уточняющий вопрос про CachedUpdates, а я например хочу услыщать про Local Share
Ответы на эти вопросы возможно помогут сделать некоторые предположения по проблеме.
Реально после POST ты должен уже иметь этот номер, если конечно ты препятствовал этому какими ни будь действиями.
← →
Algiz © (2005-06-16 15:01) [25]Anatoly Podgoretsky © (16.06.05 14:41) [24]
Ну про CachedUpdates я написал, он false, а Local Share тоже в false.
← →
Anatoly Podgoretsky © (2005-06-16 15:09) [26]Algiz © (16.06.05 15:01) [25]
Это может и не повлияет, но поставь Local Share в True, избавишься от разного рода других ошибок и спасешь базу.
← →
Algiz © (2005-06-16 15:20) [27]Anatoly Podgoretsky © (16.06.05 15:09) [26]
обсалютно ничего не поменялось((
← →
Algiz © (2005-06-16 15:26) [28]А если я скину базы и программу, мож кто посмотрит?..Может я что нить не так делаю...
← →
Algiz © (2005-06-16 15:44) [29]А как вообще реализовать вот это
size=20 (16.06.05 14:31) [23]
select max(id) from table
Можно поподробнее рассказать.
← →
Anatoly Podgoretsky © (2005-06-16 15:45) [30]Algiz © (16.06.05 15:26) [28]
Ты укажи ссылку, может кто и посмотрит.
Algiz © (16.06.05 15:44) [29]
Это не рабочее решение, только в рамках однопользовательской версии и то не всегда.
← →
Algiz © (2005-06-16 15:54) [31]Anatoly Podgoretsky © (16.06.05 15:45) [30]
Да мне к сегодняшнему вечеру надо, осталось чуть больше часа.
А она и так будет однопользовательской.
← →
Sergey13 © (2005-06-16 16:02) [32]2[31] Algiz © (16.06.05 15:54)
Кидаешь на форму TQuery. В SQL ему пишешь
select max(Num) as max_num from table_name
table_name - это имя твоей таблицы.
Делаешь после поста
Query1.Close;
Query1.Open;
и читаtim значение.
aut:=Query1.FieldByName("max_Num").asInteger;
← →
Algiz © (2005-06-16 16:21) [33]Всем спасибо!! Последнее поле он определяет.
А вот в дочерней таблице полю типа integer не хочет присваивать это значение(
← →
Sergey13 © (2005-06-16 16:31) [34]2 [33] Algiz © (16.06.05 16:21)
Значит не судьба. 8-)
Уже и дочерние таблицы появились. Может еще и вложенные появятся. Всего то 5 часов прошло с первого вопроса. Подождем.
← →
Algiz © (2005-06-16 16:32) [35]У меня две таблицы. Главная таблица связана с дочерней связью Num(AutoInc)--> Num (integer). Мне надо присвоить полю Num дочерней таблицы значение поля Num главной. Но дело в том что не хочет присваивать.(
← →
Algiz © (2005-06-16 16:33) [36]Sergey13 © (16.06.05 16:31) [34]
А она была с самого начала. Но для меня главной целью было тогда определения значения автоинкрементного поля.
← →
Sergey13 © (2005-06-16 16:35) [37]2[35] Algiz © (16.06.05 16:32)
Тебе делать нечего? Код для получения из тебя выдрали на 11 посте. Еще скока тебя надо уговаривать, что бы посмотреть код присваивания?
← →
Anatoly Podgoretsky © (2005-06-16 16:36) [38]Так и говори не хочу и не буду?
← →
Algiz © (2005-06-16 16:54) [39]УРА!!!! Сделал!!! Всем БОЛЬШОЕ СПАСИБО!!!!
Страницы: 1 вся ветка
Текущий архив: 2005.07.31;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.04 c