Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++ Builder] БД


Автор: Bondleha 28.1.2012, 15:40
Здраствуйте! ТАкой вопрос!! Можно ли как нибудь реализовать программку!! У меня допустим имеется на Form1 расчет переменной u[i]=.........................., и на Form2 имеется база данных! как мне допустим в поле этой базы данных вывести результат переменной u[i]?? Подскажи очень нужно!!! Спасибо! Не важно можно с Table, а можно и с query с помощью sql!!

Автор: kin 28.1.2012, 15:54
Привет! Переменную делаешь свойством первой формы, далее, из второй формы ее забираешь, и записываешь в БД...

Автор: Bondleha 28.1.2012, 15:56
так дело в том, что мне нужно из формы забрать не одну переменную а штук 7!! Вот у меня этот вопрос и завис!! 
Можете показать как программно это реализовать ??

Автор: kin 28.1.2012, 16:03
Не знаю всей задачи, но если переменные однотипные, используй массив, список, коллекцию и т.д., если тип переменных разный, подойдет любой составной тип (структура, класс и пр...).

Автор: Bondleha 28.1.2012, 16:05
Ок! Спасибо буду пробовать!

Автор: Bondleha 28.1.2012, 17:46
неа чет не выходит((((

Автор: Данкинг 28.1.2012, 17:52
Цитата(Bondleha @  28.1.2012,  16:40 Найти цитируемый пост)
и на Form2 имеется база данных!

Как интересно. Я уже заинтригован.
Цитата(Bondleha @  28.1.2012,  18:46 Найти цитируемый пост)
неа чет не выходит(((( 

Конечно, потому что лично мне ничего не понятно. Что требуется: передать переменную из одной формы в другую, что ли? Там объявляй её глобально. 

Автор: Bondleha 28.1.2012, 17:56
Данкинг
Сейчас поясню!! Я расчитываю на первой форме несколько переменных(в цикле)!! Мне необходимо вывести значения этих переменных через базу данных!! которая находится на другой форме! Т.е. чтобы в  каждом поле базы данных выводилась своя переменная!! Как то так!! 

Автор: Данкинг 28.1.2012, 18:16
Цитата(Bondleha @  28.1.2012,  18:56 Найти цитируемый пост)
Т.е. чтобы в  каждом поле базы данных выводилась своя переменная!! 

И что не получается - записать значение переменной в таблицу, что ли?

Автор: Bondleha 28.1.2012, 18:26
Данкинг
да чтобы они не в ручную а автоматически с расчетом этих переменных вносились в таблицу)) помогите пжл!! чет не пойму!

Автор: Данкинг 28.1.2012, 18:46
Я-таки не понял: непосредственно что не выходит у тебя? Работа с таблицами?

Добавлено через 1 минуту и 31 секунду
Код

DataSet->Append();
DataSet->FieldByName("fam")->AsString="Ололо";
DataSet->Post;

Автор: Bondleha 28.1.2012, 18:54
Данкинг
у меня не выходит именно вывести значение этой переменной в поле таблицы !!

Автор: Данкинг 28.1.2012, 19:11
Что значит "не выходит" - ошибка вылезает?

Автор: Bondleha 30.1.2012, 10:33
нет!! Не пойму суть!! Ваще это выполнимо??

Автор: Данкинг 30.1.2012, 11:08
Ну так я же пример привёл.

Добавлено @ 11:10
Объявляешь переменную в public первой формы (в файле .h). А из второй обращаешься к ней как Form1->u[i].

Автор: Bondleha 30.1.2012, 18:10
Данкинг
Объявил переменные! На другой форму создал обработчики для каждого поля таблице и ничего не выводит!"!(((

Автор: Данкинг 30.1.2012, 20:07
Как ты понимаешь, что "ничего не выводит"?

Автор: Bondleha 30.1.2012, 20:57
Данкинг
т.е. у меня почему то ноль выводит!! А мат часть работает нормально!! Переменная как то не так выводится!!

Автор: Bondleha 31.1.2012, 12:32
Данкинг
Почему  то выводит нулевое значение!! В чем может быть причина не подскажите?? Объявляю переменную так!В public^
float u[900]; Так ведь?? почему оно с моего обработчика не считывает эту переменную!! Или может ее как нибудь с кнопки нужно считать??

Автор: Данкинг 31.1.2012, 13:08
Без кода ничего сказать не могу.

Автор: Bondleha 31.1.2012, 14:33
del

Автор: Данкинг 31.1.2012, 15:14
Цитата(Bondleha @  31.1.2012,  15:33 Найти цитируемый пост)
Вот в кнопке пуск у меня расчитываются еременные!!

Весь код писать не обязательно было. Я имел в виду только тот, который относится к вопросу.
Цитата

Код

sprintf(buf,"INSERT INTO base.dbf WHERE Form1->u[i] = %lf", Query1U->Value);
Query1->SQL->Text = buf;


Так это работает, что ли?

Автор: Bondleha 31.1.2012, 17:09
нет!! Это я забыл удалить!! Мне нужно с Table сделать а не с query

Автор: Данкинг 31.1.2012, 19:19
А СУБД какая? Вообще я же http://forum.vingrad.ru/index.php?showtopic=346103&view=findpost&p=2453740 уже пример.

Автор: Bondleha 31.1.2012, 19:44
в dabase desktope делал!!

Автор: Данкинг 31.1.2012, 20:03
Это как - просто датасет, что ли? Ну тогда мой пример тоже сгодится.

Автор: Bondleha 1.2.2012, 07:49
Ошибка такая?

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDatabaseError with message ''u[i]' is not a valid floating point value for field 'U''. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------
Код

DataSource1->DataSet->Append();
DataSource1->DataSet->FieldByName("U")->AsString="u[i]";
DataSource1->DataSet->Post();


Автор: Данкинг 1.2.2012, 10:08
Значит, ты в поле целого типа пытаешься записать вещественную переменную.

Автор: Bondleha 1.2.2012, 10:13
Данкинг
Ну да она вещественная!! А как для вещественного будет выглядеть??

Автор: Данкинг 1.2.2012, 10:19
Код

DataSource1->DataSet->FieldByName("U")->AsFloat=u[i];

Автор: Bondleha 1.2.2012, 10:25
Все заработало!! ТОлько теперь вопрос у меня стал!! Почему 0 выврдит!! Ну ладно буду разбираться!! Спасибо друг помог!!!

Автор: Bondleha 1.2.2012, 10:50
Еще один вопросик а как мне очистку таблицы реализовать??

Автор: Данкинг 1.2.2012, 11:03
Код

delete from table

Автор: Bondleha 1.2.2012, 11:13
Последний вопрос!!! Подскажи почему 0 таблица заполняется??? Щас все проверил все считается норм через отладчик!! А выводит 0((

Автор: Данкинг 1.2.2012, 11:14
Откуда же мне знать, почему там у тебя переменным ничего не присваивается. 

Автор: Bondleha 1.2.2012, 11:30
Данкинг
Спасибо тебе большое)) все пошло нашел в чем была проблема))) А слушай очистку таблицы можно без sql сделать?? 

Автор: Данкинг 1.2.2012, 11:42
Наслаждайся. smile Без SQL очистка будет дольше осуществляеться. А так - вроде есть метод DataSet->Delete, вот и вызывай его до тех пор пока Table->RecordCount <>0.

Автор: Bondleha 1.2.2012, 11:51
Все через SQL сделал!! Спасибо тебе)))

Автор: Bondleha 1.2.2012, 12:53
Извени что надоел))Как мне эту таблицу в файл сохранить???

Автор: Данкинг 1.2.2012, 13:11
В какой файл - в текстовый, что ли? Сделать два цикла - построчно и поколоночно, и брать значения. Как в текстовый файл сохранять на Билдере - не знаю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)