Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ввязался...


vasIZmax ©   (2007-02-21 22:44:00) 

Подскажите, плиз, как оформить код. Смысл такой: есть БД
первое поле -  номер_операции,
второе - дата,
третье - описание, и т.д.
Никак не могу организовать чтобы когда юзер нажимает Append, номер сразу автоматом увеличивался на единицу.

Первый день сегодня с БД работаю, поэтому из того что накопал понял что код приблизительно должен быть такой(имхо):
if form1.DBNavigator1.BtnClick(nbinsert)=нажато then
form1.Table1.IndexFields[0].Text:=inttostr(form1.Table1.RecordCount+1);


Подскажите...)), как это сделать?...


vasIZmax   (2007-02-22 14:01:00) [1]


> Megabyte ©   (22.02.07 10:06) [10]

ага, Парадокс юзал.

Но почему-то не хочет создаваться Access (в общем Alias is not type of MSACCESS). И видно, че-то отключил(?) че в BDEAdmin-е никуда не впускает - повсюду ерроры(((

Итого: спасибо всем кто подсказал в решении проблемы))))))))

ЗЫ. Читаю Сорокина "Delphi разработка БД". или может есть получше?


Megabyte   (2007-02-22 10:06:00) [2]

Я так понимаю, у тебя БД Парадокс.
тип поля + это и есть тип поля Автоинкрементный, т.е. автоматически увеличивается на 1 при вводе данных.

Совет: как можно скорее перелезай на другую БД, например Access(Парадокс слишком старый), как только хоть немного вникнешь в азы БД.


RASkov   (2007-02-22 10:01:00) [3]

> но пишет, что БД занята. В чем причина?

Delphi такой же "пользователь"(в контексте БД) как и ты, и компоненты, такие как TTable, физически открывают таблицы БД(свойство Active=True, при правильно выставленных других свойст) даже в дизайнтайме. А для работы Database Desktop с таблицами необходим монопольный режим.


ЮЮ   (2007-02-22 04:19:00) [4]


> т.е. открыт код в дельфе, но не запущен(!)),

Потому что используешь TTable, которые у тебя открыты и в Disign-е


> код в дельфе, но не запущен

Откуда же тогда в гриде данные видны. Код в дельфе уже "запущен". Не запущен - если в блокноие :)


vasIZmax   (2007-02-21 23:53:00) [5]


> RASkov   (21.02.07 23:36) [6]

Я сделал иначе (а может и тоже самое))). Вообщем открыл Database Desktop. Открыл(restructure) нужную БД, и в type поставил "+", а потом в secondary index->define добавил и переместил number (первое поле). Потом добавил еще nom (ну попросило добавить я и добавил))))). В index options отметил галкой unique. сохранил и заработало))))))).

Но это чисто на интутивном уровне сделал без понимания процесса (теперь основательно буду БД учить))))).

И такой вот вопросик если проект в котором я использую (т.е. открыт код в дельфе, но не запущен(!)), почему то пытаюсь открыть БД через Database Desktop, но пишет, что БД занята. В чем причина? Или просто тривиальное решение такой проблемы: закрыть проект в дельфе не помогает?

ЗЫ. это последний вопрос))))... и буду учить..., что бы не постить простых задач))))))


RASkov   (2007-02-21 23:36:00) [6]

> [5] vasIZmax ©   (21.02.07 23:22)

Какая БД? Сделай поле "первое поле -  номер_операции," AutoIncrement...


vasIZmax   (2007-02-21 23:22:00) [7]


> Petr V. Abramov ©   (21.02.07 23:14) [4]

я ж говорю что БД занимаюсь только... э-э-э... 5 часов...)))(ну, не работал я раньше с БД, поэтому и туплю(((()... и работа рассчита не для многоюзерской работы, а для одного юзера...

для номера я поставил "обязательный ввод", если не введет номер, то ошибка появляется.

Я читал, что ошибки перехватывать и пр., ну а нафик это надо, если можно автоматом оформить ввод номера. можно ли?


Petr V. Abramov   (2007-02-21 23:14:00) [8]

а если юзер нажмет "не хочу дальше вводить"? что будет с номером? при многоюзерской работе-то?
никто еще не помер от того, что номер присваиватеся при сохранении.


vasIZmax   (2007-02-21 23:09:00) [9]


> Zeqfreed ©   (21.02.07 22:59) [2]

этот код почему-то не работает (у меня). Просто задча такая: чтобы юзер не в таблице вводил данные, а при помощи компоненнтов, т.е.
перевожу на русский:

для того чтобы во второе поле вставлял дату я такой код использовал:
form1.Table1.Fields[1].Text:=datetostr(form1.DateTimePicker1.DateTime);

а теперь мне надо, чтобы когда юзер нажимал на навигаторе "добавить", то автоматом в таблице вводился следующий номер. вот.

ЗЫ. если надо еще раз объянить, я подробнее опишу)))


Zeqfreed   (2007-02-21 22:59:00) [10]

update table set field = field + 1;?


Johnmen   (2007-02-21 22:54:00) [11]

А как ты думаешь, студенты в первый же день, как увидели скальпель, тело режут?

>  как это сделать?...

Или тебе букварь сюда скопи-пастить?


Наверх

Титульная страница Поиск, карта сайта Написать письмо