Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2011, 21:18   #11
anabenne
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от lovetolaugh Посмотреть сообщение
Сделай ADOConnection1.Mode = cmRead. Однако, когда будешь изменять значения полей (например программно), то поменяй его - например на cmReadWrite или на значение по умолчанию cmUnknown.



Вот простая программа в которой реализовано добавление.

БД
Программа

Сейчас времени совсем нет. На остальные вопросы потом отвечу (в понедельник ГОС'ы сдавать - красный диплом медным тазом висит).
Спасибо!
только я не совсем понял про adoconnection..на форму его добавить? и в его свойствах делать?
anabenne вне форума Ответить с цитированием
Старый 18.06.2011, 22:25   #12
lovetolaugh
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от anabenne Посмотреть сообщение
Спасибо!
только я не совсем понял про adoconnection..на форму его добавить? и в его свойствах делать?
Если вы подключили БД к своей программе - значит у вас уже есть adoconnection на форме. По умолчанию св-во ADOConnection.mode имеет значение cmUnknown - т.е. режим работы с БД определяется во время выполнения программы.

Вы можете по умолчанию (т.е. вручную - до запуска программы) установить св-во mode в режим cmRead - тогда соединения с БД будет открыто в режиме "чтения". После этого вы не сможете изменить значение поля таблицы ни "тыкнув по DBGrid" , ни изменив значение программно.

Поэтому в программе, перед тем как изменять значение полей таблицы, необходимо прописать следующие строчки:

Код:
adoconnection1.mode := cmReadWrite; //или adoconnection1.mode := cmUnknown - переводим работу с БД в режим "чтения-записи" - чтобы можно было изменять значения полей;

//здесь вы изменяете поля таблицы

adoconnection1.mode := cmRead; // переводим работу с БД в режим "чтения" - чтобы опять нельзя было изменить значения полей таблицы "тыкнув по DBGrid"

Последний раз редактировалось lovetolaugh; 18.06.2011 в 22:28.
lovetolaugh вне форума Ответить с цитированием
Старый 19.06.2011, 00:51   #13
anabenne
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 13
По умолчанию

Спасибо ) но вопрос решился проще - DBGrid.ReadOnly = TRue.
Что осталось это - Есть dbgrid где отображается моя таблица. Я нажимаю добавить, открываю новую форму где как и в таблице 6 записей : ФИО адрес улица и тп. Я пишу нового клиента, добавить. ОК. в таблице новая запись. Вот что я не могу сделать..
anabenne вне форума Ответить с цитированием
Старый 19.06.2011, 01:36   #14
lovetolaugh
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от anabenne Посмотреть сообщение
Спасибо ) но вопрос решился проще - DBGrid.ReadOnly = TRue.
Что осталось это - Есть dbgrid где отображается моя таблица. Я нажимаю добавить, открываю новую форму где как и в таблице 6 записей : ФИО адрес улица и тп. Я пишу нового клиента, добавить. ОК. в таблице новая запись. Вот что я не могу сделать..
Пару постов назад я ж выложил пример в котором это реализовано. Там есть очень простая БД в которую добавляется новая запись.
lovetolaugh вне форума Ответить с цитированием
Старый 19.06.2011, 10:42   #15
anabenne
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 13
По умолчанию

Цитата:
Сообщение от lovetolaugh Посмотреть сообщение
Пару постов назад я ж выложил пример в котором это реализовано. Там есть очень простая БД в которую добавляется новая запись.
спасибо сижу разбираю, но во тчто непонятно

Код:
begin
    form2.Close;
    n := form1.ADOQuery1.RecordCount;
    form1.adoquery1.Close;
    form1.ADOQuery1.SQL.Clear;
    form1.ADOQuery1.SQL.Add('insert into Students values('+inttostr(n+1)+', '+quotedstr(edit1.text)+', '+quotedstr(edit2.text)+', '+quotedstr(edit3.text)+', '+quotedstr(edit4.text)+', convert(datetime, '+quotedstr(edit5.text)+',103), '+quotedstr(edit6.text)+', '+quotedstr(edit7.text)+', '+quotedstr(edit8.text)+', '+quotedstr(edit9.text)+')');
    form1.ADOQuery1.ExecSQL;
end;
ты используешь ADOQuery. а я нет. У меня только dbgrid,table,datasource. Я так понимаю надо query добавить?
anabenne вне форума Ответить с цитированием
Старый 20.06.2011, 05:05   #16
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

ДЛя работы с запросами да. Надо query. А вообще не стоит использовать table, лучше пока не поздно поменять на query. А еще лучше использовать DataSet.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять. mad_raven Общие вопросы C/C++ 10 11.10.2010 03:33
не могу понять Dawystrik SQL, базы данных 0 06.09.2009 19:20
Не могу понять Superlotles Помощь студентам 8 31.08.2009 20:39
не могу понять... Dutchman Паскаль, Turbo Pascal, PascalABC.NET 4 14.12.2006 07:14