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

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

Добавить запить в БД


Страницы:   1 2

Daria ©   (2005-12-06 16:13:00) 

Спасибо всем, кто помог с моей предыдущей проблемой!!!
Теперь есть еще одна.
В database desktop есть таблица. как добавить в какой-нибудь столбец запись??? Раньше я это делала через dbnavigator. а вот как это сделать программно (в смысле что написать надо)????


Gala_l   (2005-12-06 19:43:00) [1]

Vosmi komponent zaprosa i v svoistve SQL napishi:
Delete from table1
ili kin na formu komponent tablizi, tam toze est svoistvo Delete.
Ja predpochitaju rabotat cherez zaprosi SQL, a ne naprjamuju s tablizami.
V Rossii kucha literaturi po Delphi i SQL, tak chto ne perezivai. Ja Delphi toze tolko nemnogo v institute uchila (let 10 nazad), a ponadobilos, tak vspominaju. Knizki chitaju


Daria   (2005-12-06 18:11:00) [2]

и еще один вопрос на последок: хочу, чтобы при запуске программы, моя база обнулялась (т.е. все, что там было раньше стиралось). как это сделать?


Megabyte   (2005-12-06 18:10:00) [3]


> msguns ©  

Тебе бы книжки писать для начинающих. %)


Daria   (2005-12-06 18:02:00) [4]

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


msguns   (2005-12-06 17:46:00) [5]

(продолжение "лекции")

Этот метод помимо плюсов (простота реализации, "приспособленность" "визуализирующих" контролов-гридов под редактирование непосредственно в видимой таблице (как в Экселе)), имеет и минусы. В частности, нельзя редактировать СЛОЖНЫЙ НД, полученный из нескольких таблиц либо содержащий не все поля исходной таблицы либо "хитро" упорядоченный.
Для решения такой проблемы сушествуют разные прикрутки и отвертки типа TUpdateObject, TUpdateSQL и т.д., которые к тому же и имеют четкую "ориентацию" на достаточно узкий круг объектов (компонент) доступа. Но это - сложный путь и для Даш непригодный ;)
Поэтому есть второй способ изменений в БД

2. Разделение отображение и изменения данных.
При этом способе отображаемые данные получаются на "клиенте" с помощью только ЧИТАЮЩЕГО запроса (например TQuery) и поэтому нет никаких ограничений в получении таких данных (хоть из все таблиц БД сразу, хотя в большинстве случаев такой запрос либо нереален, либо будет содержать кашу). Для редактирования служат другие обекты доступа (тот же класс TQuery с св-вом SQL = 'INSERT', 'DELETE', 'UPDATE'), формировать которые можно "на ходу" в коде (динамическое использование объектов доступа к БД), либо статическое ("накидать" компонент в дизайне и настроить их куак надо).
При таком подходе интерфейс редактирования БД следует разработать самому, вместе с "кнопками", проверками корректности и т.д. Зато редактировать можно сразу НЕСКОЛЬКО таблиц и даже использовать сложные, многоступенчатые алгоритмы коррекции целых фрагментов базы данных. Примеры такого метода работы приводить не буду, т.к. они не могут обойтись без "чудища огромно,обло,озорно, стозевно и лайяй", то бишь SQL, в котором ты, похоже, ни в узду, ни в красную армию  ;))


Daria   (2005-12-06 17:34:00) [6]

большое спасибо за содержательную лекцию! :)

но, кстати, к диплому я еще не приступала. это действительно для работы.


msguns   (2005-12-06 17:29:00) [7]

В БД нет ни столбцов (есть нечто отдаленно напоминающее "столбцы" - это домены, но это нечто другое !), ни ячеек, ни колонок, ни даже строк. Там есть таблицы, состоящие из записей, каждая из которых включает в себя несколько полей, имеющих определенный тип данных.

Поэтому редактировать в БД можно только заданные поляв заданных записяхзаданных таблиц.

Редактирование бывает трех типов: добавление (Insert), изменение (update) и удаление (delete).

Редактирование делается двумя способами:
1. На сервере (с помощью всяких прибамбасов типа триггеров, хранимых процедур и т.д., "знающих" ЧТО и ГДЕ изменять при ОПРЕДЕЛЕННЫХ УСЛОВИЯХ) по команде с "клиента"
2. На клиенте с помощью запроса (ов), точно указывающих какик записи в каких таблицах подлежать изменению-удалению-добавлению. "Сервер" сам ничего не "додумывает", "тупо" следуя заданной в SQL-запросе инструкции.

На "клиенте" (у тебя именно такой случай, ибо для "локальных" БД, коей является "твой" парадокс или дибэйз, "сервера" нет и быть не может) можно менять данные в БД также двояко:

1. С помощью единственного объекта доступа TXXDataSet, используя методы:
а) для добавления: Insert
б) изменения: Edit
в) удаления: Delete

В первых двух случаях после выдачи указанных "команд" НИКАКИЕ ДАННЫЕ В ТАБЛИЦЕ ИЗМЕНЕНЫ НЕ БУДУТ,- набор данных (НД) будет лишь "подготовлен" для того, чтобы послать изменения в таблицу БД. Поля текущей записи НД следует заполнить "ручками" и после этого выдать "команду" Post. Но и после этого еще не гарантия, что изменения "осядут" в физической БД. Для уверенности в этом надо выдать "команду" ApplyUpdates либо закрыть НД "командой" Close и вновь открыть.

Пример изменения записи:

With Table1 do
 begin
  Edit;
  FieldByName('FIO').AsString := 'Дашка Батьковна Лопухина-Сачкова';
  FieldByName('COURSE').AsString := 'Типа диплом';
  FieldByName('TESTDATE').AsDateTime := StrToDate('06.12.05');
  FieldByName('TESTSCORE').AsInteger := 2;
  FieldByName('TESTFLAG').AsBoolean := false;
  Post;
  ApplyUpdates;
 end;


Daria   (2005-12-06 17:29:00) [8]

ну, по крайней мере кусочек теперь работает....какой импорт?


myor   (2005-12-06 17:29:00) [9]

[12] натюрлих
[14] сам виноват, почитай свой же пост нумбер 58 в предыдущей ветке :-)
лаба, курсач - берите выше - диплом! :-)
[16], [17] - ...но если очень хочется, то можно (ц)  :-)
огромное такое человеческое спасибо, Daria, за хорошее настроение.
и хотя заповедь программиста гласит: "работает - не трогай!", попробуйте все таки вставлять записи построчно:
table1.insert+[f1]


alex_***   (2005-12-06 17:27:00) [10]

не зарекайся. импорт заработал?


Daria   (2005-12-06 17:23:00) [11]

alex_*** огромное такое человеческое спасибо!!!!! вот теперь все работает


alex_***   (2005-12-06 17:16:00) [12]

сформулируй вопрос. Как вставить запись? ->

Table1.Append();
Table1.FieldByName('value').AsString := 'test';
Table1.Post();

вариант для вставки записи. еще вопросы?


Daria   (2005-12-06 17:08:00) [13]

msguns, я уже диплом пишу, все курсачи и лабы давно сдала. а дельфи мы проходили только на 3-ем курсе. писали какой-то там АРМ (кстати, сама). т.к. после этого с дельфями не связывалась, то все успешно и забыла...
а dataset в help смотрела, читала и пр. и пр.


msguns   (2005-12-06 16:57:00) [14]

>Daria   (06.12.05 16:47) [11]
>Tdataset видела. какой командов в столбец че-нить записать?

Ай да девчёнка, ай да проказница !
Вы, пачаны, как хотите, а я просто очарован. И в ногах. Типа валяюсь. Ну просто УБОЙНАЯ наивность и простота !

Писать в СТОЛБЕЦ !?!?!?!?
Tdataset ВИДЕЛА!!!!!!!!

И какой он, позвольте полюбопытстовать ? Как выглядит ? Сколько глаз, зубьев, крылов, командов?

Врешь ты, Дарья батьковна, или, как говорят "заливаешь". О том, что "писали", "работали", "делали".. Кто-то, мож, и делал, писал.. Но не ты, эге ж ?
А теперь, когда петух пониже пояса приговорил, так сразу в крик ? Начальник там, то да се... Так и поверили мы, лоходроны. Лаба, небось, горит. Или курсач припер..


Anatoly Podgoretsky   (2005-12-06 16:56:00) [15]

Daria   (06.12.05 16:47) [11]
Дарья тебе же сказали нельзя в столбец добавить запись, можно добавить в строку, а делается это или с помощью запроса INSERT INTO или методом INSERT у датасет.


Плохиш   (2005-12-06 16:51:00) [16]

Kirche - Küche - Kinder


Daria   (2005-12-06 16:47:00) [17]

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


Megabyte   (2005-12-06 16:43:00) [18]

Пущай сразу SQL рюхает, чтобы соответственно добавлять записи с помощью него. %)


Плохиш   (2005-12-06 16:42:00) [19]

А на свидание девушку так никто и не приглашает ;-)


alex_***   (2005-12-06 16:40:00) [20]

Даш, посмотри примеры в папке дельфей, в самом деле, или статью нарой на DelphiKingdom или здесь


Страницы:   1 2

Наверх

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