Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись данных в БД 
V
    Опции темы
Zigmyndshtein
Дата 29.5.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



подскажите пожалуйста как мне передать данные с формы в БД
я использую компонент Query, в его свойстве SQL содержится такая строка "select *from <table>", это строка мне нужна для операции с полями базы.
как нме при таком раскладе собрать данные из компонентов Edit на фотме и записать их в базу.
я пробовал 

query->FildByName("имя поля")->Value=Edit->Text;

но ничего не вышло, вывалилась ошибка
PM MAIL   Вверх
Rodman
Дата 29.5.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



используй не SELECT, а INSERT!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Dmi3ev
Дата 29.5.2008, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



не понимаю в чем у Вас проблема? вот так не подходит?
Код

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO имя_таблицы (поле1, поле2)  VALUES ("+Edit1->Text+" , "+Edit2->Text+");");
Query1->Open();

писал прям тут, но ошибок вроде нет smile 

Это сообщение отредактировал(а) Dmi3ev - 29.5.2008, 21:41


--------------------

PM MAIL   Вверх
Данкинг
Дата 29.5.2008, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Dmi3ev @  29.5.2008,  22:40 Найти цитируемый пост)
Query1->Open();

Может, Query1->ExecSql ?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Zigmyndshtein
Дата 29.5.2008, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dmi3ev @ 29.5.2008,  21:40)
не понимаю в чем у Вас проблема? вот так не подходит?
Код

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO имя_таблицы (поле1, поле2)  VALUES ("+Edit1->Text+" , "+Edit2->Text+");");
Query1->Open();

писал прям тут, но ошибок вроде нет smile

этот код вешать на кнопку? если так то я уже пробовал этот вариант! ругается... на "плюсы" ругатеся и говорит, что запись не может быть добавлена.
може как то нужно открыть базу или ещё чего?
PM MAIL   Вверх
Данкинг
Дата 29.5.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Zigmyndshtein @  30.5.2008,  00:49 Найти цитируемый пост)
этот код вешать на кнопку? 

На кнопку добавления данных.

Цитата(Zigmyndshtein @  30.5.2008,  00:49 Найти цитируемый пост)
ругается... на "плюсы"

Какие плюсы? Что именно пишет в ошибке?

Цитата(Zigmyndshtein @  30.5.2008,  00:49 Найти цитируемый пост)
може как то нужно открыть базу или ещё чего? 

Открыть - не открыть, но подключиться к ней определённо не мешало бы! smile 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Zigmyndshtein
Дата 29.5.2008, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Данкинг
база подключна через Query.
а зачем прописывать в самом начале запроса Query->Close();

а ругается на те плюсы которые перед и после Edit-ов стоят

Добавлено через 4 минуты и 56 секунд
я впринципе понимаю что сдесь ничего нет сложного, но может я где-то что-то упустил?
PM MAIL   Вверх
Данкинг
Дата 30.5.2008, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Zigmyndshtein @  30.5.2008,  00:58 Найти цитируемый пост)
база подключна через Query.

А сам Query куда подключён?

Цитата(Zigmyndshtein @  30.5.2008,  00:58 Найти цитируемый пост)
а зачем прописывать в самом начале запроса Query->Close();

Чтобы закрыть запрос, а затем обязательно надо очистить его SQL-данные (что мы и видим в примере).

Цитата(Zigmyndshtein @  30.5.2008,  00:58 Найти цитируемый пост)
а ругается на те плюсы которые перед и после Edit-ов стоят 

Так какая именно ошибка? Попробуй через параметры (в синтаксисе Билдера могу ошибиться):

Код

 Query1->Close()
 Query1->SQL->Clear()
 Query1->SQL->Text="insert into otchet3 values (:par1,:par2)"
 Query1->Parameters->ParamByName("par1")->Value=Edit1->Text
 Query1->Parameters->ParamByName("par2")->Value=Edit2->Text
 Query1->ExecSQL();




Это сообщение отредактировал(а) Данкинг - 30.5.2008, 01:12


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
jonie
Дата 30.5.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



Цитата

Query1->SQL.Text
там, наверно, везде ->


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Данкинг
Дата 30.5.2008, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(jonie @ 30.5.2008,  01:27)
Цитата

Query1->SQL.Text
там, наверно, везде ->

Ну понятно, я с Дельфи переделывал. Сейчас исправлю.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Dmi3ev
Дата 30.5.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Данкинг, на счет execsql ты прав, это же не запрос на выборку smile 
 
Zigmyndshtein, я немного неправильно написал, чтобы работало, надо так:
Код

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO Table1 (Field1, Field2)  VALUES ( '"+Edit1->Text+"', '"+Edit2->Text+"')");
Query1->ExecSQL();

добавились кавычки одинарные перед и после Edit-ов, заметил? это чтобы он понимал, что мы добавляем свой текст, а не имя поля. если будешь добавлять число, то не надо их ставить, и так понятно, что это не имя поля. если бы у нас были числовые поля, а не текстовые, мы бы так написали:
Код

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO Table1 (Field1, Field2)  VALUES ( "+StrToInt(Edit1->Text)+", "+StrToInt(Edit2->Text)+")");
Query1->ExecSQL();

эти примеры я проверил, работают.


--------------------

PM MAIL   Вверх
Zigmyndshtein
Дата 30.5.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



попробовал я этот код:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO Obchii_jyrnal (Num_zajavki)  VALUES ( "+StrToInt(Edit1->Text)+")");
Query1->ExecSQL();

выпала ошибка ещё при компидяции:
[C++ Ioeaea] Unit3.cpp(32): E2085 Invalid pointer addition

со следующим вариантом кода:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO Obchii_jyrnal (Num_zajavki, Dataa)  VALUES ( '"+Edit1->Text+"', '"+Edit2->Text+"')");
Query1->ExecSQL();
вроде всё нормально, он красиво комплицца и прога запускается, но при нажатии на кнопку занесения данных в дазу на которой висит код вываливается сообщение:
Prolect Project2.exe raised exception class EDBEngineError with message 'Fild value required.'. Process stoeppd. Use Step or Run to continue
PM MAIL   Вверх
Dmi3ev
Дата 30.5.2008, 12:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



разберитесь с типами полей, из за этого у вас все проблемы.
давайте подробнее:
1. какая бд(paradox, dbase, ... )?
2. имена полей и типы?
3. куда и чего вставить?
а то приходится догадываться, что там у вас.


--------------------

PM MAIL   Вверх
TaNK
Дата 30.5.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Zigmyndshtein @ 30.5.2008,  11:35)
попробовал я этот код:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO Obchii_jyrnal (Num_zajavki)  VALUES ( "+StrToInt(Edit1->Text)+")");
Query1->ExecSQL();

выпала ошибка ещё при компидяции:
[C++ Ioeaea] Unit3.cpp(32): E2085 Invalid pointer addition

со следующим вариантом кода:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO Obchii_jyrnal (Num_zajavki, Dataa)  VALUES ( '"+Edit1->Text+"', '"+Edit2->Text+"')");
Query1->ExecSQL();
вроде всё нормально, он красиво комплицца и прога запускается, но при нажатии на кнопку занесения данных в дазу на которой висит код вываливается сообщение:
Prolect Project2.exe raised exception class EDBEngineError with message 'Fild value required.'. Process stoeppd. Use Step or Run to continue

Код

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("INSERT INTO Obchii_jyrnal (Num_zajavki)  VALUES ( "+(Edit1->Text)+")");
Query1->ExecSQL();



Dataa - какого типа Date или varchar?

Это сообщение отредактировал(а) TaNK - 30.5.2008, 12:35


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Zigmyndshtein
Дата 30.5.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Dmi3ev
БД paradox
поле(Num_Zajavriki)  тип Number(N)
поле(Dataa)   тип Date(D)
и есть поле Naimenovanie    тип Alpha(A)

и нужно из Edit-тов на форме собрать данные записать в БД
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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