Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление строк. ADO MSSQL 
:(
    Опции темы
Чучмек
Дата 3.4.2013, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 1
Всего: 41



Несколько раз хотел создать эту тему, садился, вставал, начинал писать, откладывал на потом.
... вокруг да около.
Интересует добавление записей в таблицы.
Кто как делает?
Прошу вашего совета.
Интересует в первую очередь 
1. Проверка полей стоки перед отправкой на сервер.
2. Добавление строки в соединенную таблицу (JOIN, VIEW).    
3. Использование хранимок для добавление строк совместно с DBGrid.

Сейчас добавление строки делаю так:
DBGrid1.ReadOnly=true

Нажатие кнопки "Добавить"
Код

  ADODataSet1.Append;
  DBGrid1.SetFocus;
  DBGrid1.SelectedField:=DBGrid1.Fields[1];  
  DBGrid1.ReadOnly:=false;

Чтобы новая строка не исчезала при тычке мышью "внетуда" 
Код

procedure TForm1.ADODataSet1BeforeCancel(DataSet: TDataSet);
begin
  abort;
end;

Проверка всей строки перед сохранением
Код

procedure TForm1.ADODataSet1BeforePost(DataSet: TDataSet);
var
  i:integer;
begin
  for i:=0 to DataSet.FieldCount-1 do
    if not(DataSet.Fields[i] is TAutoIncField) and (DataSet.Fields[i]. DataSet.Fields[i].Value=Null)  then abort;
  DBGrid1.ReadOnly:=true;
end;


Очень жду ваших ответов.
Спасибо.




Это сообщение отредактировал(а) Чучмек - 3.4.2013, 17:52


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Чучмек
Дата 3.4.2013, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 1
Всего: 41



Нашел еще один вариант проверки.
Код

procedure TForm1.DataSource1UpdateData(Sender: TObject);
var
  i:integer;
begin
  with (Sender as TDataSource) do
    for i:=0 to DataSet.FieldCount-1 do
      if not(DataSet.Fields[i] is TAutoIncField) and (DataSet.Fields[i].Value = Null) then Аbort;
end;



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Чучмек
Дата 6.4.2013, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 1
Всего: 41



Странно. Все знают, но молчат. Страшная тайна.
Или все, для вставки, используют кучу эдитов?
Я в работе с БД, через delphi ноль, можно сказать даже нуль. Буду рад любому совету. 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
kami
Дата 6.4.2013, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 72



Цитата(Чучмек @  6.4.2013,  20:37 Найти цитируемый пост)
Страшная тайна.

Не страшная, признаваться стыдно smile Ибо знаний по работе с БД из Delphi - чуть менее, чем 0.
Я работаю исключительно через хранимки. Не использую ничего из вкладки DataControls, только эдиты, VT, комбобоксы и тд и тп и др.  smile 

Но - у меня задача такая, что приходится очень оперативно работать с 500-2500 онлайн-элементов, и хранить историю их изменений. Мне проще загрузить их в память и работать уже со списками объектов, чем теребить БД открытыми датасетами с маленькой кучей лукапов, Locate и т.д. и т.п.
Каждый объект умеет самостоятельно проверить правильность заполнения своих полей, попытаться записать изменения себя в БД и (при успешной записи) сообщить об этом всем заинтересованным контейнерам. Если запись провалена - быстренько восстанавливает прежнее состояние и всё.

Вот когда доберусь до создания отчетов по истории всех этих элементов, чувствую - будет интересно  smile 

Это сообщение отредактировал(а) kami - 6.4.2013, 22:48
PM MAIL WWW   Вверх
Akella
Дата 7.4.2013, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Чучмек @  6.4.2013,  20:37 Найти цитируемый пост)
Странно. Все знают, но молчат. Страшная тайна.


да ты просто странные вопросы какие-то задаешь

Добавлено через 25 секунд
Цитата(kami @  6.4.2013,  22:48 Найти цитируемый пост)
Не использую ничего из вкладки DataControls

+1
PM MAIL   Вверх
Чучмек
Дата 7.4.2013, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 1
Всего: 41



Цитата(Akella @  7.4.2013,  12:11 Найти цитируемый пост)
да ты просто странные вопросы какие-то задаешь

Если человекЧучмек странное спрашивает, возможно он движется не в том  направлении. 



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.