Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2013, 22:38   #1
Alexxa
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 10
Вопрос Запрос БД, FireBird

Доброго времени суток.
Подскажите пожалуйста как организовать запрос к БД.
Есть таблица с 3-мя столбцами VAL, PARAM, LOGIN. Необходимо выбрать несколько строк из столбца PARAM соответствующих значениям столбца VAR. Делаю так.


Код:
fda_2=con->Select("SELECT val from options where param='FIRM_NAME' AND param='OLE' AND
 param='INGREDIENTI_TIP' AND param='INGREDIENTI_KOD' AND param='SNEKI_KOD' AND param='SNEKI_TIP'");
fda_2->Fill(ds,"options");

if(ds->Tables["options"]->Rows[0][0]!=Convert::DBNull)
textBox2->Text=ds->Tables["options"]->Rows[0][0]->ToString();
if(ds->Tables["options"]->Rows[0][1]!=Convert::DBNull)
if (ds->Tables["options"]->Rows[0][1]->ToString()=="1")
checkBox1->Checked=true;
else checkBox1->Checked=false;
if(ds->Tables["options"]->Rows[0][2]!=Convert::DBNull)
if (ds->Tables["options"]->Rows[0][2]->ToString()=="1")
radioButton1->Checked=true;
else radioButton1->Checked=false;
if(ds->Tables["options"]->Rows[0][3]!=Convert::DBNull)
if (ds->Tables["options"]->Rows[0][3]->ToString()=="1")
radioButton2->Checked=true;
else radioButton2->Checked=false;
if(ds->Tables["options"]->Rows[0][4]!=Convert::DBNull)
if (ds->Tables["options"]->Rows[0][4]->ToString()=="1")
radioButton6->Checked=true;
else radioButton6->Checked=false;
if(ds->Tables["options"]->Rows[0][5]!=Convert::DBNull)
if (ds->Tables["options"]->Rows[0][5]->ToString()=="1")
radioButton5->Checked=true;
else radioButton5->Checked=false;

Выдает ошибку при подключении к БД, "в позиции 0 строка отсутствует". Когда вытаскивала один параметр, то нормально работало.
Подскажите пожалуйста.
В чем может быть ошибка?

Последний раз редактировалось Stilet; 04.04.2013 в 08:19.
Alexxa вне форума Ответить с цитированием
Старый 03.04.2013, 23:12   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

в поле не может находится сразу несколько значений, потому не понятно что вы ждете от такогозапроса?
eval вне форума Ответить с цитированием
Старый 04.04.2013, 06:32   #3
Alexxa
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 10
По умолчанию

Как мне вытащить несколько строк столбца val? Соответствующих строкам param?
Alexxa вне форума Ответить с цитированием
Старый 04.04.2013, 08:19   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

AND замени на OR
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2013, 13:31   #5
Alexxa
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
AND замени на OR
Тогда выбирается только одна строка, а мне нужны все . Не создавать же кучу подключений с запросами?
Alexxa вне форума Ответить с цитированием
Старый 04.04.2013, 13:33   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

вы один AND заменили или все?
eval вне форума Ответить с цитированием
Старый 04.04.2013, 13:41   #7
Alexxa
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
вы один AND заменили или все?
Все. Я понимаю что я вытаскиваю только одно значение. При AND и при OR все равно только одно значение в VAl считывается. Если бы просто столбцы вытаскивать, то можно было бы через запятую. А тут именно строки.
Alexxa вне форума Ответить с цитированием
Старый 04.04.2013, 13:56   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

ну судя по коду вы и берете только 1 значение, код менять надо, строк пришло много, а вы только в 1 смотрите
eval вне форума Ответить с цитированием
Старый 04.04.2013, 18:56   #9
Alexxa
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 10
По умолчанию

Я сделала то что мне надо. Просто обращалась к столбцам DataSet "options", а мне надо было обращаться к строкам. У меня же из запроса получается одно значение val и несколько строк. Запрос через OR работает, спасибо Stilet . Всем спасибо за помощь.

Было так.
Код:
if(ds->Tables["options"]->Rows[0][0]!=Convert::DBNull)
textBox2->Text=ds->Tables["options"]->Rows[0][0]->ToString();
if(ds->Tables["options"]->Rows[0][1]!=Convert::DBNull)
if (ds->Tables["options"]->Rows[0][1]->ToString()=="1")
checkBox1->Checked=true;
Стало так.
Код:
if(ds->Tables["options"]->Rows[0][0]!=Convert::DBNull)
textBox2->Text=ds->Tables["options"]->Rows[0][0]->ToString();
if(ds->Tables["options"]->Rows[1][0]!=Convert::DBNull)
if (ds->Tables["options"]->Rows[1][0]->ToString()=="1")
checkBox1->Checked=true;
Alexxa вне форума Ответить с цитированием
Старый 04.04.2013, 19:21   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

еще ToString() в условии надо в мусорку отправить, и тогда совсем замечательно будет, да и проверка на дбнул сомнительна
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Builder + Firebird 2.1, запрос SELECT для таблицы с рекурсивной связью. Glacius C++ Builder 6 10.06.2012 22:06
Не могу получить запрос пароля для подключения к firebird toboom БД в Delphi 0 06.12.2011 16:21
Delphi. TreeView. Firebird: Вложенный SQL-запрос. Alexei91 БД в Delphi 5 01.08.2010 08:04
Firebird 2.5. Группировка и вложенный запрос. Антон Ю.Б. SQL, базы данных 8 02.07.2010 17:22
Запрос в FireBird Gurt87 БД в Delphi 4 01.10.2009 19:40