|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
помогите.. с очередью
Всем привет!!!
Делаю малюсенькую бд (акесс) в ней будет вестись очередь на поступление в садик. В ней есть таблица (главная) в ней 4 столбца (первый "кеу", тип счетчик и является ключевым полем) и (три остальных "фамилия", "имя", "сад", типы текстовые). При добавлении новой записи она будет будет добавлятся в конец таблицы и отображатся в низу DBGridEh. А что делать если чел который будет забивать данные пропустит одного ребенка и спохватится когда забьет данные скажем 200 человек хотя пропущенный ребенок должен быть 10 в списке. Помогите пожалуйста очень нужно. |
#2
|
||||
|
||||
Добавь еще одно поле, в котором и будешь держать порядок очереди. Сделай так чтобы оно заполнялось автоматически, а если понадобиться поменять местами 2-х человек, то это нужно сделать как бы отдельной опцией.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
||||
|
||||
Aristarh Dark, добавил еще одно поле (rnomer, тип поля текс) поле заполняется автоматом
Код:
Form1.ADOTable1.FieldValues['rnomer']:=IntToStr((form1.DBGridEh1.RowCount)-1); |
#4
|
||||
|
||||
На самом деле тебе нужно запросом вычислять максимальное значение этого поля и делать новое поле на +1 ... а когда тебе будет нужно сменить порядок то:
Код:
var n:string; n:=Edit1.Text; Table1.Edit; Table1.Locate(n,'rnomer',[]); Table1.FieldByName('rnomer').AsString:=n+'_'; Table1.Post; Table1.Locate(n,'rnomer',[]); Table1.First; while not Table1.Eof do begin Table1.Edit; Table1.FieldByName('rnomer').AsString:=IntToStr(StrToInt(Table1.FieldByName('rnomer').AsString)+1); Table1.Post; Table1.Next; end; Table1.Locate(n+'_','rnomer',[]); Table1.Edit; Table1.FieldByName('rnomer').AsString:=n; Table1.Post; ... примерно так Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Последний раз редактировалось Yurk@, 10.03.2009 в 20:32. |
#5
|
||||
|
||||
При вставке в середину (например в позицию 5) думаю пригодился бы SQL
Код:
UPDATE tablename SET rnomer = rnomer + 1 WHERE rnomer >= 5; |
#6
|
||||
|
||||
Yurk@, я так понял твой код должен менять номер каждой записи
s0Creator, у меня делфи выдает ошибку "несоответствие типов данных в выражении условия отбора" и еще вопросик а можно строку в DBGridEh сдвинуть вверх или в низ ??? |