Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в запросе и проблема StringGrid 
V
    Опции темы
freshAngel
  Дата 5.10.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

DataModule1->ADOQuery2->Active = false;
  DataModule1->ADOQuery2->SQL->Clear();
  DataModule1->ADOQuery2->SQL->Text = "SELECT tasktext, comment, dt, ballsid FROM tasks WHERE task = '"+name+"' AND login = '"+Form1->Edit1->Text+"'";
  DataModule1->ADOQuery2->Open(); 

DataModule1->ADOQuery3->Active = false;
DataModule1->ADOQuery3->SQL->Clear();
DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = "+ADOQuery2->Fields->Fields[3]->AsInteger;
DataModule1->ADOQuery3->Open();


if(DataModule1->ADOQuery3->RecordCount != 0)
{
ShowMessage("OK");
Form2->StringGrid1->Cells[0] = "OK";

} else {
ShowMessage("NO");
Form2->StringGrid1->Cells[0] = "NO";

}
if(DataModule1->ADOQuery3)
{
//DataModule1->ADOQuery3->Active = true;
DataModule1->ADOQuery3->SQL->Clear();
DataModule1->ADOQuery3->Close();
} else ShowMessage("Ошибка БД");

if(DataModule1->ADOQuery2)
  {
 // DataModule1->ADOQuery2->Active = true;
  DataModule1->ADOQuery2->SQL->Clear();
  DataModule1->ADOQuery2->Close();
  } else ShowMessage("Ошибка БД");

 

Суть проблемы в том, что при выполнении DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = "+ADOQuery2->Fields->Fields[3]->AsInteger;
проиходит ошибка.
Хотя, если сделать так: DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = 2"; - все работает.
Или ShowMessage(ADOQuery2->Fields->Fields[3]->AsInteger); - выводит число, все работает.
В ошибке пишет, что - то типа: Ошибка ODBC предпологался запрос: SELECT, DELETE, UPDATE


И вторая проблема...
Не записывается значение в StringGrid1.
Например, Form2->StringGrid1->Cells[0] = "OK"; выдает ошибку

[C++ Error] Unit2.cpp(94): E2034 Cannot convert 'AnsiString' to 'int'
[C++ Error] Unit2.cpp(94): E2342 Type mismatch in parameter 'ARow' (wanted 'int', got 'AnsiString')
[C++ Error] Unit2.cpp(94): E2193 Too few parameters in call to '_fastcall TStringGrid::SetCells(int,int,const AnsiString)'

Таблица StringGrid1 представляет собой: 5 cols, 1 rows


Таблица: TASK

tasktext (memo), comment(memo), dt(date/time), ballsid(число, primary key), task(varchar)

Таблица BALLS

b1 (число) id(число, primary key)

Это сообщение отредактировал(а) freshAngel - 5.10.2008, 14:38
PM MAIL   Вверх
romanыч
Дата 5.10.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Суть проблемы в том, что при выполнении DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = "+ADOQuery2->Fields->Fields[3]->AsInteger;

А ";" еще не пробовал поставить.
Цитата

Суть проблемы в том, что при выполнении DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = "+ADOQuery2->Fields->Fields[3]->AsInteger + ";"


Это сообщение отредактировал(а) romanыч - 5.10.2008, 15:56
PM MAIL   Вверх
freshAngel
  Дата 5.10.2008, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(romanыч @  5.10.2008,  15:56 Найти цитируемый пост)

Суть проблемы в том, что при выполнении DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = "+ADOQuery2->Fields->Fields[3]->AsInteger + ";"



Код

DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = "+DataModule1->ADOQuery2->Fields->Fields[3]->AsInteger+";"


Выдает ошибку:

[C++ Error] Unit2.cpp(87): E2085 Invalid pointer addition
[C++ Error] Unit2.cpp(88): E2379 Statement missing ;


А если так:
Код

DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = "+DataModule1->ADOQuery2->Fields->Fields[3]->AsInteger+";";


Выдает ошибку:

[C++ Error] Unit2.cpp(87): E2085 Invalid pointer addition





Это сообщение отредактировал(а) freshAngel - 5.10.2008, 16:12
PM MAIL   Вверх
romanыч
Дата 5.10.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А если так
Код

DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = " + IntToStr(DataModule1->ADOQuery2->Fields->Fields[3]->AsInteger) + ";";

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


Бывалый
*


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

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



Цитата(romanыч @  5.10.2008,  16:38 Найти цитируемый пост)
DataModule1->ADOQuery3->SQL->Text = "SELECT b1,id FROM balls WHERE id = " + IntToStr(DataModule1->ADOQuery2->Fields->Fields[3]->AsInteger) + ";";


Работает  smile 
А зачем еще одна ; !?
И в чем вообще была ошибка!?

Нашел еще решение:

Код

DataModule1->ADOQuery3->SQL->Text = "SELECT b1 FROM balls WHERE id = "+DataModule1->ADOQuery2->Fields->Fields[3]->AsString;
 

Хотя тут странность, я вроде уже так делал, но не работало.... Теперь запахало  smile 


PM MAIL   Вверх
romanыч
Дата 5.10.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну в си к строке число прибавить нельзя, поэтому и IntToStr или AsString, это в VB я так помоему делал.
А ";" нужна так как любой запрос оканчивается ";". Она же в кавычках поэтому относится к тексту запроса а вторая строку си закрывает вот и все.

Это сообщение отредактировал(а) romanыч - 5.10.2008, 17:56
PM MAIL   Вверх
freshAngel
  Дата 5.10.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Понятно.
Спасибо!

Со StringGrid1 разобрался.

Код

Form2->StringGrid1->Cells[0][0] = "OK";


Независимо от разрядности матрицы строка и столбец указываются всегда... 

Это сообщение отредактировал(а) freshAngel - 5.10.2008, 17:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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