Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
mate   (2003-02-13 15:43) [0]

Как сделать поле в котором будут номера записей по порядку. Подскажите плиз.


 
stone   (2003-02-13 15:47) [1]

Поле в базе данных или поле TField в DataSet


 
Stas   (2003-02-13 15:50) [2]

В MSSQL nип поля Integer свойство identy - Yes


 
Johnmen   (2003-02-13 15:56) [3]

Никак... Если ты не извращенец...:)))


 
mate   (2003-02-13 16:17) [4]


> stone © (13.02.03 15:47)
> Поле в базе данных или поле TField в DataSet

И при удалении какой-то записи мне делать пересчет... :(


> Stas © (13.02.03 15:50)
> В MSSQL nип поля Integer свойство identy - Yes

Это будет уникальное поле , а не "попорядку рассчитайсь".
И если я взапросе напишу order by то они и не по возрастанию ещё будут а абы как.


> Johnmen © (13.02.03 15:56)
> Никак... Если ты не извращенец...:)))


А ты тоже не прав , я их в событии DBGrid2DrawColumnCell на канвасе написал и всё нормально. Вот так примерно
if column.Title.Caption="№" then
form1.DBGrid2.Canvas.TextOut(Rect.Left+1,Rect.Top+1,pchar(inttostr(form1.Query1.recno)));
Вот и всё , все большое спа. ;)


 
Anatoly Podgoretsky   (2003-02-13 16:26) [5]

С какие пор recno это номер по порядку и при этом что бы был у всех баз.
Теперь поставь фильтр на запрос.


 
sniknik   (2003-02-13 16:27) [6]

recno не всегда работает, можеш нарватся на глюк.


 
Zev   (2003-02-13 16:30) [7]

Set nocount on

select Identity( int, 1,1) as Num, -- создаем поле аутоикрем
BlankCode , -- прочии поля не должны быть уник аутоинкр !!!
Name
into #tmp -- во временную таблицу #tmp
from XX_BlankCodeAIR
select * -- итоговый запрос
from #tmp

drop table #tmp -- удаление временной таблицы


 
Stas   (2003-02-13 16:34) [8]

Может я че-то неверно вписал, но MSSQL есть 100% Autoincrement, Но можно это сделать руками немного надежнее чем ты придумал, а делается это примерно так:
Берется еще один запрос, в свойстве SQL вписывается: Select max (MyField) from Mytable.
В своей таблице на событие AfterInsert вписываешь такой код:

Query1.Open;
Table1.Fields[0].AsInteger:=Query1.Fields[0].Asinteger+1;
Query1.Close;




 
stone   (2003-02-13 16:39) [9]


> if column.Title.Caption="№" then
> form1.DBGrid2.Canvas.TextOut(Rect.Left+1,Rect.Top+1,pchar(inttostr(form1.Query1.recno)));


При работе через ADO (проверено)
можно в датасете создавать дополнительное выисляемое поле и в OnCalcFields писать Query1.FieldByName("RecNo").Value := Query1.RecNo;


 
mate   (2003-02-13 16:48) [10]


> В своей таблице на событие AfterInsert вписываешь такой
> код

А на событие AfterDelete мне придётся делать дикремент ...?


 
Stas   (2003-02-13 16:58) [11]

А тебе что нужно ? чтобы выводился фактический номер записи в поле ? Зачем ? Как ты их будешь искать ?


 
jocko   (2003-02-13 17:10) [12]

sniknik ©
>recno не всегда работает, можеш нарватся на глюк.
вот я пишу OnAfterScroll
showmessage( "запись " + inttostr(DataSet.RecNo)+ " из " + inttostr(DataSet.RecordCount));
и все работает
где я нарвусь?



 
sniknik   (2003-02-13 17:19) [13]

просто в один прекрасный день (или наоборот некрасный? :))) можеш получить запись
showmessage( "запись -1 из -1");
но если ты только для этого используеш то ты прав глюка не будет будет непонятка.


 
jocko   (2003-02-13 17:26) [14]

if not DataSet.IsEmpty then ...


 
Johnmen   (2003-02-13 17:29) [15]

>jocko (13.02.03 17:10)

Нарвешься при
1. использовании определенных движков
2. при фильтрации
3. ...и не только с RecNo, но и с RecordCount"ом


 
sniknik   (2003-02-13 17:32) [16]

читаем хелр

Examine RecordCount to determine the total number of records in the recordset of the dataset component. Applications might use this property with RecNo to iterate through all the records in a dataset, though typically record iteration is handled with calls to First, Last, MoveBy, and Prior using Eof and Bof to set the limits of row traversing.

The dataset component must be active for RecordCount to provide a valid number. Should ADO not be able to determine that actual number of rows, RecordCount will return a value of negative one (-1).

выделено
если ADO не может определить реальное количество строк, RecordCount вернет отрицательное значение еденицы (-1).

если есть варианты с неизвестным количеством строк то о каком порядковом номере может идти речь?


 
sniknik   (2003-02-13 17:35) [17]

jocko (13.02.03 17:26)
if not DataSet.IsEmpty then ...

а ты думал что это при пустом датасете возращается? не только, при асинхронном открытии, некоторых курсорах да мало ли еще чего.



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

Форум: "Базы";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.6 MB
Время: 0.047 c
14-5784
Nickola2
2003-02-12 16:55
2003.03.03
Вопрос


6-5705
Spy X
2003-01-12 11:38
2003.03.03
Связь по модему.


7-5894
Иксик
2003-01-02 12:57
2003.03.03
Баг в XP


3-5442
AM
2003-02-12 16:20
2003.03.03
Ошибка при Preview, как избавиться от нее


3-5475
vladimirS
2003-02-14 09:48
2003.03.03
Как составить запрс?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский