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

Форум: "Начинающим";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.041 c
15-1194338110
Costy
2007-11-06 11:35
2007.12.09
Вопрос по литературе


15-1194520607
Делать_нечего
2007-11-08 14:16
2007.12.09
"Код"


3-1186494647
SLesya
2007-08-07 17:50
2007.12.09
отладчик в dll/bpl


1-1189288423
Dr. Andrew
2007-09-09 01:53
2007.12.09
Чем можно заменить GetTickCount? Нужна точность до 1 мсек!


15-1194867744
@!!ex
2007-11-12 14:42
2007.12.09
Проект вылетает





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский