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

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

Вставка записи в бд [D7, IB6.x]


Страницы:   1 2

Staraya ©   (2003-03-16 21:42:00) 

Здравствуйте! Я совсем недавно начала изучать программирование бд клиент-сервер. Мне нужно вставить запись в таблицу. На форме располагаются компоненты DataSourse1, dataBase1,query1,edit1,edit2 и кнопочка "Записать".Для того чтоб вставить запись я должна написать в свойстве sql компонента query1 "insert into Имя_Табл...values(список знач)". Я одного не пойму, зачем такие сложности, обычный юзер не знает язык sql, он должен их вводить в поля edit1,edit2. А как это реализовать я не могу разобраться. Может кому-то этот вопрос покажется не достойным внимания, но очень прошу помочь.


myor   (2003-03-17 13:50:00) [21]

Staraya (17.03.03 13:29)

я бы написал хп на вставку (в ibconsole)
...
procedure table1_insert(field1 char(15), field2 integer)
...
insert into table1(field1, field2)
values (:field1, :field2)
...
а потом (в проге):
...
with ibstoredproc1 do begin
prepare;
params[0].asstring:=edit1.text;
params[1].asinteger:=edit2.text;
...
execproc;
end;


zacho   (2003-03-17 13:48:00) [22]


> Staraya (17.03.03 13:29)

Если именно параметры, то примерно так: DataSet.ParamByName("MY_PARAM").AsString=Edit.text
P.S. Настоятельно советую не использовать BDE. Лучше IBX(входит в поставку Дельфи) или FIBPlus,IBO(нужно покупать отдельно)


Johnmen   (2003-03-17 13:36:00) [23]

>MsGuns © (17.03.03 13:22)

Возражаю ! :) Но помогать буду, если смогу... :))))

>zacho © (17.03.03 13:22)

Возможно. Я не проверял...


Staraya   (2003-03-17 13:29:00) [24]

> Desdechado
Моя проблема именно в том, что я не знаю как подставлять параметры из edit"ов. Если не очень Вас затруднит, объясните мне пожалуйста


zacho   (2003-03-17 13:22:00) [25]


> Johnmen © (17.03.03 13:16)

В IBX работает как :, так и ?


MsGuns   (2003-03-17 13:22:00) [26]

>zacho © (17.03.03 13:15)
>Johnmen © (17.03.03 13:16)

Спасиба, пачаны, счас спробую ;))

PS Жень, я тебя вообще-то уже записал в свои учителя ;)) Ты не очень возражаешь ?
PPS (хотя кто тебя будет спрашивать ;)))))



Johnmen   (2003-03-17 13:16:00) [27]

? обозначение параметра в FIBPlus, но можно и :
Для IBX :


zacho   (2003-03-17 13:15:00) [28]


> MsGuns © (17.03.03 13:09)

Насколько знаю, без разницы.


MsGuns   (2003-03-17 13:09:00) [29]

>zacho © (17.03.03 12:34)

Спасибо за столь подробный ответ. Но вот еще: разница между ":" и "?". В литературе есть и так, и так. Насколько я понял, вообще-то стандарт - это ":", а вопрос - это "мулька" IB ? Так что надо писать - без разницы для IB ?


MsGuns   (2003-03-17 13:06:00) [30]

>Johnmen © (17.03.03 12:33)
>Серёга, ты чего измельчал то ? :)))

Это не я измельчал - задрал наш Proxi, уже обещал мордель шефу этой гнилой конторы начистить, ведро водяры проставить, жену его ... во всех позициях - ничего не помогает - инет как был хреновый, так и остается. По 7 раз надо набирать чтоб хоть что-то отправить,- нетрудно и ник свой не так набрать.


Anatoly Podgoretsky   (2003-03-17 12:36:00) [31]

alex55 © (16.03.03 23:46)
Лучше выдумать не мог "вместо TQuery используй TTable"

С какой стати ты приплел сюда "чтоб он был "живым"это для INSERT INTO то

"А конечному user"у не то чтобы не надо знать SQL" пользователю конечно ни к чему, а вот тебе не помешает.



zacho   (2003-03-17 12:34:00) [32]

Примеры для FIBPlus отлично подойдут и для IBX, и то, и другое, родилось из FIBC. Естественно, те примеры, где не используются спецефические возможности FIB+
Параметры можно использовать не только в SelectSQL, но и в InsertSQL, ModifySQL, DeleteSQL, RefreshSQL.
Вот простой пример:
Предположим, есть таблица MYTABLE с полями ID - первичный ключ и NAME varchar. SelectSQL выглядит так: SELECT ID,NAME FROM MYTABLE
Тогда:
DeleteSQL: DELETE FROM MYTABLE WHERE ID=?ID
ModifySQL: UPDATE MYTABLE SET NAME=?NAME WHERE ID=?ID
InsertSQL: INSERT INTO MYTABLE (ID,NAME) VALUES(?ID,?NAME)
Если ID может изменяться, то ModifySQL толжен быть таким UPDATE MYTABLE SET ID=?ID, NAME=?NAME WHERE ID=?OLD_ID


Johnmen   (2003-03-17 12:33:00) [33]

> ms guns ©

Серёга, ты чего измельчал то ? :)))

По вопросу :
Значения параметров берутся автоматически из значений соответствующих полей записи НД.
Напр. :tratata - подставляется значение поля tratata
Также из полей записи НД, на который м.б.установлен DataSource
Также можно руками прописать значение параметра...


msguns   (2003-03-17 12:22:00) [34]

>Desdechado © (17.03.03 10:35)

Я вот тоже разбираюсь с этой фигней (вставкой/изменением) и хочу делать это через TIBDataSet (InsertSQL, UpdateSQL и т.д.). Формирую эти запросы ручками, а потом Insert и Post, а после этого еще и Locate, чтоб стала активной. Так вот как мне использовать параметры в этих запросах, я так и не разобрался (Params ведь для Select ?). Во всех книгах, что у меня есть, приводятся примеры либо с BDE - компонентами (Тексейра), либо через TIBSQL/TIBQuery (Самплы Борланда + Фаронов), либо FIBPlas (Ковязин).
Если не трудно, объясните дуракам поподробнее именно с TIBDataSet (мне он интуитивно кажется самым интересным)


Desdechado   (2003-03-17 10:35:00) [35]

1. TTable и SQL-сервер - мертворожденное дитя :)
2. ТQuery не обязательно живой должен быть, можно и CachedUpdates использовать
3. команду INSERT INTO можно формировать прямо в коде, подставляя параметры в нее из Edit"ов


HSolo   (2003-03-17 10:28:00) [36]

А вот этого:
"вместо TQuery используй TTable"
делать не надо


alex55   (2003-03-16 23:46:00) [37]

Начни с того, что вместо TQuery используй TTable, а вместо TEdit - TDBEdit. А кнопочкой "Записать"
выполни TTable.Post. Если очень хочется использовать TQuery - позаботься, чтоб он был "живым"
(TQuery.RequestLive). А конечному user"у не то чтобы не надо знать SQL, но и о его существовании
он может не подозревать.


Anatoly Podgoretsky   (2003-03-16 23:13:00) [38]

Зачем, это ты напиши в программе, а в edit1, edit2 только данные для вставки.


Sergey Masloff   (2003-03-16 22:31:00) [39]

Посмотрите примеры из поставки Delphi (каталог Demos/Db)


Страницы:   1 2

Наверх

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