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

Вниз

Как получить значение автоинкрементного поля?   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.04 c
3-1119391897
DimonS
2005-06-22 02:11
2005.07.31
Подскажите, как правильно создать БД Foxpro в дельфях?


14-1120993461
kaif
2005-07-10 15:04
2005.07.31
Кто-нибудь знает, зачем спамеры


14-1121087569
oldman
2005-07-11 17:12
2005.07.31
Ни фига себе прикол!!!


4-1116411956
lehich
2005-05-18 14:25
2005.07.31
кодировка и clipboard


3-1119519600
ceval
2005-06-23 13:40
2005.07.31
как мне в таблицу записать следующие





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