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

Вниз

Вставка записи   Найти похожие ветки 

 
Arick   (2002-11-30 23:53) [0]

Господа помогите новичку с SQL.
Есть запись , номер которой (поле Number) - N
как вставить запись и занести в Number номер N+1?


 
AK-74   (2002-12-01 03:26) [1]

Так и пиши:

Query.SQL.Clear;
Query.SQL.Add("insert into TableName (n) values (:n)");
Query.ParamByName("n").AsInteger := n + 1;
Query.ExecSQL;


Значение n из старой записи ты получаешь где-то раньше.

P.S. На всякий случай: SQL не отменяет автоинкрементные поля Paradox.


 
Arick   (2002-12-01 12:57) [2]

А как получить N?


 
MsGuns   (2002-12-01 14:44) [3]

Если это надо для получения уникального указателя записи, то используй Autoinc, если он не удовлетворяет, то надо определять самому. Самое простое:

var
mxnum: integer;
begin
...

Query1.SQL.Clear;
Query1.SQL.Add("SELECT MAX(Id) AS MaxNum From Table");
Query1.Prepare;
Query1.Open;
mxnum := Query1.FieldByName("MaxNum").AsInteger;
Query1.Close;

...

С последующим

Table1.Append
Table1.FieldByName("Id").AsInteger := inc(mxnum);

или

Query1.SQL.Add("INSERT INTO Table1 (Id) values("+IntToStr(inc(mxnum))+")";

Но для сетевого доступа это отстой, т.к. при попытке одновременной вставки двух юзеров для обоих будет получено ОДНО И ТО ЖЕ значение. Для парадокса можно делать добавление (Append) в цикле с защищенным блоком, в котором, если неудачно, увеличивать mxNum на 1 и в начало цикла.

Хотя в общем-то все вышеизложенное есть не что иное как собственное моделирование автоинкремента, что, ИМХО, не есть хорошо.


 
Arick   (2002-12-01 15:05) [4]

Автоинкремент не могу использовать т.к. это полем - ключевое,
к нему присоединена вторая таблица в которой тип
не поля соединения не может быть Автоинкремент

Как бы сформировать запрос типа:
SELECT(MAX(Main.Number)+1) as M
FROM Main

INSERT
INTO Main(Number)
VALUES (M)
Но INSERT не работает.


 
MsGuns   (2002-12-01 15:45) [5]

Твой случай типичный:
Гл.таблица
1. ID - autoinc Primary


Делал
1. ID - I Primary (Связь с Гл)
2. ID2 - autoinc Primary (Собств.UID)


 
Arick   (2002-12-01 17:40) [6]

Спасибо, MsGuns, просто я не знал, что autoinc и I совместимы



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

Форум: "Базы";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
4-61877
TankMan
2002-11-06 21:20
2002.12.19
Опять проблемы с


14-61808
AL2002
2002-11-25 13:18
2002.12.19
Королевство дельфи. (не успел добавить). Теперь можно и стереть.


4-61869
MrAngel
2002-11-01 16:13
2002.12.19
Где найти описание функции AlphaDIBBlend


1-61555
Kotka
2002-12-07 21:58
2002.12.19
Мерцание имажа


1-61573
kepten
2002-12-09 07:40
2002.12.19
Borland kylix





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