Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Вниз

Добавить запить в БД   Найти похожие ветки 

 
Daria   (2005-12-06 16:13) [0]

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


 
alex_*** ©   (2005-12-06 16:15) [1]

зпись добавляется в таблицу, а не в столбец. Надо вызвать метод Insert у Table1


 
Daria   (2005-12-06 16:20) [2]

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


 
Sergey13 ©   (2005-12-06 16:20) [3]

http://delphimaster.net/view/3-1133777994/

[14] Daria   (05.12.05 14:08)
я же сказала, что со всем остальным справлюсь. мы в институте писали всякие программы, только работали уже с таблицами paradox, делали их в database desktop. так что с того момента, как загружусь, я справлюсь.... главное - загрузить


Выходит - врала.

Кто еще аську не просил/не давал? Навались. 8-)


 
Daria   (2005-12-06 16:21) [4]

:))) ну хватит!!!  я могу дальше работать. а вот это относится к вопросу как туда загрузить... :)))


 
Виталий Панасенко   (2005-12-06 16:32) [5]

У тебя ж, вроди, Архангельский есть под рукой ?


 
msguns ©   (2005-12-06 16:33) [6]

Дашка, а ну за учебники, лентяйка ! Хотя бы начни с TDataSet, лгунишка ;))


 
alex_*** ©   (2005-12-06 16:39) [7]

шалунишка :)


 
alex_*** ©   (2005-12-06 16:40) [8]

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


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

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


 
Megabyte ©   (2005-12-06 16:43) [10]

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


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

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


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

Kirche - Küche - Kinder


 
Anatoly Podgoretsky ©   (2005-12-06 16:56) [13]

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


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

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

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

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

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

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


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

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


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

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

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

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


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

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


 
alex_*** ©   (2005-12-06 17:27) [18]

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


 
myor ©   (2005-12-06 17:29) [19]

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


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

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


 
msguns ©   (2005-12-06 17:29) [21]

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

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

Редактирование бывает трех типов: добавление (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:34) [22]

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

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


 
msguns ©   (2005-12-06 17:46) [23]

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

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

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


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

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


 
Megabyte ©   (2005-12-06 18:10) [25]


> msguns ©  

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


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

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


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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.013 c
4-1130302678
HardMan
2005-10-26 08:57
2005.12.25
Определение модели винта и его скорости чтения/записи


10-1109669552
Redhopter
2005-03-01 12:32
2005.12.25
Закрытие com-хранилищ


2-1134237548
GrayFace
2005-12-10 20:59
2005.12.25
Ликбез по BDE


2-1133904191
Kot
2005-12-07 00:23
2005.12.25
Перемещение по DBGrid


14-1133422507
Ega23
2005-12-01 10:35
2005.12.25
С днем рождения! 1 декабря





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский