Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++ Builder 6 Access 
:(
    Опции темы
Tamina
Дата 27.9.2010, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 Привет всем!!!
В программировании я не очень!

У меня проблема!
Из базы данных берётся таблица Б. Из таблицы Б берутся 2 поля(столбика)- Б1 и Б2.
Затем из той же базы данных берётся таблица С. Из таблицы С берётся поле(столбик) С1.

Нужно вытащить значения(цифры) из таблиц Б1 и Б2. Произвести расчёт(типа Б1-Б2) и занести их в С1.

Вот то что я сделала.

 
   
Код

ADOQuery3->Close();
   ADOQuery3->SQL->Clear();
   ADOQuery3->SQL->Add("INSERT INTO С (С1) VALUES (select Б1-  Б2 from Б) ");
   ADOQuery3->ExecSQL();

 

но!!!

INSERT не может сработать т.к в нём 2 обращения к разным таблицам.

Вот что я придумала !!!
Нужно создать массив 2х мерный - a[100,2].
a[100,0]- массив чисел из таблицы Б поля Б1,
a[100,1]- массив чисел из таблицы Б поля Б2,
a[100,2]- массив чисел из таблицы С поля С1- результат.

Тут проблема 1.
Как запихнуть числа в этот массив?

Затем выполняется в цикле расчёт типа:

Код

for(int i=0;i<=99;i++){
a[i,2]=a[i,0]-a[i,1]; 
}

В вот этой записи не уверена a[i,2]=a[i,0]-a[i,1]; не знаю можно ли так писать?

А затем выполняю код:

Код

ADOQuery3->Close();
   ADOQuery3->SQL->Clear();
   ADOQuery3->SQL->Add("INSERT INTO С (С1) VALUES (a[i,2]) ");
   ADOQuery3->ExecSQL();

 

Помогите решить проблему!
Заранее спасибо!!! 
PM MAIL   Вверх
Данкинг
Дата 27.9.2010, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Tamina @  27.9.2010,  19:05 Найти цитируемый пост)
Как запихнуть числа в этот массив?

Не особо понял, что требуется, но в общем случае, взять значение поля, в общем случае: 
Код

p=AdoTable->FieldValues['POLE']

Цитата(Tamina @  27.9.2010,  19:05 Найти цитируемый пост)
В вот этой записи не уверена a[i,2]=a[i,0]-a[i,1]; не знаю можно ли так писать?

В каком смысле "можно"? Код работает или нет?


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


Новичок



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

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



Цитата

    
p=AdoTable->FieldValues['POLE']



Этот код подставит в P числа, которые хранятся в 'POLE'?

Цитата

В вот этой записи не уверена a[i,2]=a[i,0]-a[i,1]; не знаю можно ли так писать?

В каком смысле "можно"? Код работает или нет?



Не пробовала т.к. a[i,2]=a[i,0]-a[i,1] должны быть числа из базы данных. 
А я именно это не знаю как делать!!!
PM MAIL   Вверх
Данкинг
Дата 27.9.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Tamina @  27.9.2010,  20:24 Найти цитируемый пост)
Этот код подставит в P числа, которые хранятся в 'POLE'?

Да, значения данного поля возьмёт.


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


Новичок



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

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



Цитата

p=AdoTable->FieldValues['POLE']


В таком варианте не работает!
Вот нашла такой 
Код

double z [20][2];
z [20][0]=ADOQuery1->FieldByName("Б1");

выдаёт ошибку на 
Код

z [20][0]=ADOQuery1->FieldByName("Б1");



Цитата

Illegal use of floating point


Это сообщение отредактировал(а) Tamina - 27.9.2010, 22:09
PM MAIL   Вверх
Данкинг
Дата 27.9.2010, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Ну да, 
Код

ADOQuery1->FieldByName("Б1")->AsFloat;



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


Новичок



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

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



Вот что я на программировала:
Код

float p[33][2];
int z;
while(z<=32){
p[z][0]=AdoQuery1->FieldByName(B)->AsFloat;
p[z][1]=AdoQuery2->FieldByName(C)->AsFloat;
z++;
}
 
for(z=0;z<=32;z++){
p[z][2]=p[z][0]-p[z][1];
   ADOQuery3->Close();
   ADOQuery3->SQL->Clear();
   ADOQuery3->SQL->Add("INSERT INTO С (С1) VALUES (p[i][2]) ");
   ADOQuery3->ExecSQL();
 
}


Ошибка в синтаксисе(пропущен оператор ) в выражении запроса "p[i][2]" 
PM MAIL   Вверх
Данкинг
Дата 28.9.2010, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Вероятно, как-то так:
Код

ADOQuery3->SQL->Add("INSERT INTO С (С1) VALUES ("+IntToStr(p[i][2])+")");



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


Новичок



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

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



Так тоже пробовала

Ошибка "Не совпадает число запросов и число результирующих полей"
Пробовала в INSERT INTO С (С1) писать все поля -ошибка! 
PM MAIL   Вверх
Данкинг
Дата 28.9.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



А откуда вообще взялась переменная i, если в коде - z ?


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


Новичок



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

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



Вместо i везде  z!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


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

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


 




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


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

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