Вниз
Скачать: CL | DM;

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

 
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.016 c
1-61601
olden
2002-12-06 18:56
2002.12.19
как избежать прокрутки комбобокса колесом мышки


1-61582
UserL
2002-12-06 12:57
2002.12.19
Extended Stored Procedures


3-61398
SZap
2002-12-02 16:48
2002.12.19
Защищенная БД


1-61572
dvm_mail
2002-12-10 04:27
2002.12.19
Колонки в ListBox-e


14-61782
bak
2002-11-26 12:46
2002.12.19
скрытие процесса в w2k




   Наверх