![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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;... примерно так ![]() Последний раз редактировалось Yurk@, 10.03.2009 в 20:32. |
|
#5
|
||||
|
||||
|
При вставке в середину (например в позицию 5) думаю пригодился бы SQL
Код:
UPDATE tablename SET rnomer = rnomer + 1 WHERE rnomer >= 5; |
|
#6
|
||||
|
||||
|
Yurk@, я так понял твой код должен менять номер каждой записи
s0Creator, у меня делфи выдает ошибку "несоответствие типов данных в выражении условия отбора" и еще вопросик а можно строку в DBGridEh сдвинуть вверх или в низ ??? |