Вниз
Скачать: 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.011 c
1-61684
qwertyu123
2002-12-08 21:35
2002.12.19
resource


1-61688
^Sanya
2002-12-08 13:09
2002.12.19
Как программно открыть htm-файл посредством Excel?


4-61883
AndreyH
2002-11-05 14:16
2002.12.19
Симулятор LPT1


3-61405
Vick
2002-12-03 12:51
2002.12.19
BCD-поля в ADODataSet


4-61866
Nick-From
2002-11-05 21:23
2002.12.19
Integer & Dword +WINAPI




   Наверх