Форум: "Начинающим";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
ВнизКопирование записей Найти похожие ветки
← →
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 RecCountMAX(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 = 1SQL.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 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.041 c