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

Копирование записей   Найти похожие ветки 

← →
webpauk ©   (2007-11-12 12:26) [0]

Копирую несколько записей.
Таблица из 3 полей: ID, IDFilter, Name.
Пытаюсь присвоить им правильную нумерацию, но столкнулся с проблемой, если определить количество записей и просто добавлять их к ID - не получается правыильная нумерация.

var
   fI1, fI2, fI3: Integer
begin
   fI1:=значение1; // IDFilterOld
   fI3:=значение2; // IDFilterNew

   SQL.Clear;
   SQL.Add("SELECT COUNT(*) AS RecCount FROM MyTable");
   Active:=True
   fI2:=FieldByName("RecCount").AsInteger;

   SQL.Clear;
   SQL.Add("INSERT INTO MyTable");
   SQL.Add("SELECT ID+"+IntToStr(fI2)+", "+IntToStr(fI3)+", Name FROM MyTable");
   SQL.Add("WHERE (IDFilter=:IDFilter)");
   Params[0].AsInteger:=fI1;

   ExecSQL;
end;


код работает, пока ID идет последовательно.


← →
stone ©   (2007-11-12 12:29) [1]


> COUNT(*) AS RecCount

MAX(ID) as MaxID


← →
Reindeer Moss Eater ©   (2007-11-12 12:37) [2]

щас скажет: "но ведь тогда ID не будут идти последовательно"


← →
stone ©   (2007-11-12 12:40) [3]


> "SELECT ID+"+IntToStr(fI2)+", "+IntToStr(fI3)+", Name FROM
> MyTable"

Дык при таком раскладе там последовательность просто жесть :)


← →
webpauk ©   (2007-11-12 12:42) [4]

вообще то последовательность ID должна равняться RecNo


← →
Reindeer Moss Eater ©   (2007-11-12 12:46) [5]

А нету никакого recno. Это оптический обман.


← →
Reindeer Moss Eater ©   (2007-11-12 12:49) [6]

вообще то последовательность ID должна равняться RecNo

А зачем тогда вообще ID, если он всегда должен бюыть равен RecNO.
Используй само RecNo.


← →
webpauk ©   (2007-11-12 12:56) [7]


> Используй само RecNo.

как в SQL.SELECT найти запись по RecNo=1 (например)


← →
Reindeer Moss Eater ©   (2007-11-12 12:57) [8]

так же как и по ID = 1


← →
webpauk ©   (2007-11-12 12:59) [9]


> так же как и по ID = 1


SQL.ADD("SELECT * FROM MyTable WHERE (???=1)");


← →
Anatoly Podgoretsky ©   (2007-11-12 12:59) [10]

Опять тоже, насчет базы будем гадать. Скоро придется все ветки закрывать из-за нежелания автора сотрудничать с органами.


← →
Reindeer Moss Eater ©   (2007-11-12 12:59) [11]

Нет никакого RecNo!
И найти по нему нельзя.
А следовательно нельзя заморачиваться такой дурью:
вообще то последовательность ID должна равняться RecNo


← →
Сергей М. ©   (2007-11-12 13:00) [12]


> webpauk ©   (12.11.07 12:56) [7]


СУБД какая ?


← →
Anatoly Podgoretsky ©   (2007-11-12 13:00) [13]


> щас скажет: "но ведь тогда ID не будут идти последовательно"

Дык он же сказал Правильную нумерацию


← →
Anatoly Podgoretsky ©   (2007-11-12 13:01) [14]

> webpauk  (12.11.2007 12:42:04)  [4]

А RecNo это правильная? И в чем тогда затруднения?


← →
webpauk ©   (2007-11-12 13:03) [15]

ID=Table.RecNo
если ID не использовать, как в SQL запросе найти запись по её номеру?


← →
webpauk ©   (2007-11-12 13:03) [16]


> Сергей М. ©   (12.11.07 13:00) [12]

TDBISAMQuery
боюсь, что это скажет не много...


← →
Reindeer Moss Eater ©   (2007-11-12 13:03) [17]

Нету никакого номера у записи. Нету.


← →
webpauk ©   (2007-11-12 13:05) [18]


> Reindeer Moss Eater ©   (12.11.07 13:03) [17]


with Table1 do
begin
 First;
 while not Eof do
 begin
   Showmessage(inttostr(RecNo));
   Next;
 end;
end;


← →
webpauk ©   (2007-11-12 13:08) [19]

упс...
TdataSet.RecNo - Indicates the active record in the dataset.


← →
sniknik ©   (2007-11-12 13:09) [20]

> Скоро придется все ветки закрывать из-за нежелания автора сотрудничать с органами.
договорились! давно хотел, т.к. изза не заполнения всего пары полей после столько флуда возникает...
лучше, бы их сделать обязательными... но...

скоро - например с завтрашнего дня, пойдет?


← →
Reindeer Moss Eater ©   (2007-11-12 13:09) [21]

Это уже упорядоченный набор данных на клиенте.  Над ним уже нельзя выполнить SQL запрос.
А на сервере нет никакого рекно.


← →
webpauk ©   (2007-11-12 13:12) [22]

если ID не использовать, как в SQL запросе найти запись по её номеру?
SQL.ADD("SELECT * FROM MyTable WHERE (???=1)");


← →
Reindeer Moss Eater ©   (2007-11-12 13:14) [23]

SQL.ADD("SELECT * FROM MyTable WHERE (RecNo=1)");


← →
webpauk ©   (2007-11-12 13:21) [24]

наверно, нечетко сформулировал: надо добавить в базу N записей, причем
для каждого поля ID значение равно RecordCount+1


← →
webpauk ©   (2007-11-12 13:22) [25]

одним INSERT-ом


← →
Reindeer Moss Eater ©   (2007-11-12 13:22) [26]

goto [1]


← →
Anatoly Podgoretsky ©   (2007-11-12 13:24) [27]

> webpauk  (12.11.2007 13:21:24)  [24]

Проблема с сохранением во временную переменную и ее инкриментирование?


← →
webpauk ©   (2007-11-12 13:24) [28]

SQL.Clear;
SQL.Add("INSERT INTO MyTable SELECT ???, IDFilter, Name FROM MyTable WHERE (IDFilter=1)");
ExecSQL;


← →
webpauk ©   (2007-11-12 13:25) [29]


> Anatoly Podgoretsky ©   (12.11.07 13:24) [27]


инкриментирование


← →
Reindeer Moss Eater ©   (2007-11-12 13:26) [30]

Триггер таблицы на инсерт


← →
Сергей М. ©   (2007-11-12 13:30) [31]


> TDBISAMQuery


Зашибись СУБД)

А TSuperPuperQuery - это тоже СУБД, надо понимать ?


← →
Anatoly Podgoretsky ©   (2007-11-12 13:36) [32]

> webpauk  (12.11.2007 13:25:29)  [29]

N := N + 1;


← →
webpauk ©   (2007-11-12 13:36) [33]


> Reindeer Moss Eater ©   (12.11.07 13:26) [30]
> Триггер таблицы на инсерт

примерчик???


← →
Reindeer Moss Eater ©   (2007-11-12 13:38) [34]

в документации по серверу


← →
webpauk ©   (2007-11-12 14:03) [35]

во...
ID: тип поля ftAutoInc
как правильно добавить запись (поля ID, IdFilter, Name)
SQL.Add("INSERT INTO MyTable VALUES (...)") если IDFilter=1, Name="Hello"


← →
Reindeer Moss Eater ©   (2007-11-12 14:07) [36]

SQL.Add("INSERT INTO MyTable(IDFilter,Name) VALUES (1,"Hello")")


← →
webpauk ©   (2007-11-12 14:11) [37]


> Reindeer Moss Eater ©   (12.11.07 14:07) [36]

фффух...
тип поля ftautoinc - и не надо ломать голову!!!



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

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



Память: 0.52 MB
Время: 0.016 c
3-1186498316
alex_tonk
2007-08-07 18:51
2007.12.09
DBLookupComboBoxEh


15-1194334395
Jeer
2007-11-06 10:33
2007.12.09
Компилятор D7 учитывает платформу ?


15-1194968623
IOrist
2007-11-13 18:43
2007.12.09
Почиму в орешнике 1 страница?


3-1186039117
Dmitry_177
2007-08-02 11:18
2007.12.09
Delphi + 1Cv77


2-1194865129
Uno
2007-11-12 13:58
2007.12.09
Протокалирование сообщений




   Наверх