Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.19;
Скачать: 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 вся ветка

Текущий архив: 2002.12.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
14-61769
kofman
2002-11-26 23:09
2002.12.19
Где найти компонент для работы с диаграммами?


8-61705
Владимир Васильев
2002-09-04 13:06
2002.12.19
NEWS: ЭКВАЛАЙЗЕР


6-61722
RRZ
2002-10-23 20:20
2002.12.19
Проблемы с кодировкой


1-61511
Mad_Ghost
2002-12-06 14:53
2002.12.19
Скока можно одновременно сетевых подключений и потоков?


3-61508
berezne
2002-12-02 22:33
2002.12.19
По файлам БД