помогите начинающему
Lazarus 0.9.20 + MySQL 5.0.27
бросаю на форму компоненты SQL50Connection, SQLQuery, SQLTransaction, Datasource, и DBGrid
две кнопки "Подключится" и "Выполнить запрос" и поле CommandEdit для ввода запросов
установил свойсва компонентов:
MySQL50Connection1 -> Transaction -> SQLTransaction1
SQLTransaction1 -> Database -> MySQL50Connection1
SQLQuery1 -> Database -> MySQL50Connection1
SQLQuery1 -> Transaction -> SQLTransaction1
DBGrid1 -> DataSource -> DataSource1
при нажатии на нопку "Подключится"
MySQL50Connection1.HostName := 'localhost';
MySQL50Connection1.UserName := 'root';
MySQL50Connection1.Password := '222';
MySQL50Connection1.DatabaseName := 'my_phones';
MySQL50Connection1.Open;
подключение к базе происходит нормально
хочу выбрать все записи из таблицы phones_main
пишу в поле CommandEdit запрос "SELECT * FROM phones_main" и жму кнопку "Выполнить запрос"
у котой прописано
procedure TFormTryMySQL.OpenQueryButtonClick(Sender: TObject);
begin
Datasource1.DataSet := SQLQuery1;
SQLQuery1.SQL.Text := CommandEdit.Text;
ShowString('Попытка выполнить запрос ' + CommandEdit.Text);
try
SQLQuery1.Open;
ShowString('запрос '+ CommandEdit.Text + ' выполнился успешно');
except
ShowString('Не удалось выполнить запрос ('+ CommandEdit.Text + ')');
end;
SQLQuery1.Close;
end;
согласно сообщениям запрос выполняется нормально,
но почему результат не отображается в DBGrid?
как вывести результат запроса в DBGrid?
Модератор: Модераторы
-
Джентельмен
- постоялец
- Сообщения: 162
- Зарегистрирован: 16.10.2005 10:47:26
- Откуда: Украина Донбасс Краматорск
- Контактная информация:
Джентельмен писал(а):ну смотри насколько я понимаю... у тебя в таблице (в гриде) записи неотображаютса вообще... правильно? такое ощущение будто ДатаСет не указан или не активен... вот... скорее всего неактивен... если я не прав, исправь меня... потом будем делать выводы дальше...
Да, грид пустой
Если имеется ввиду свойство DataSet компонента Datasource1, то ведь я его устанавливаю при нажатии кнопки OpenQueryButton
procedure TFormTryMySQL.OpenQueryButtonClick(Sender: TObject);
begin
Datasource1.DataSet := SQLQuery1;
а вот насчет активен..., а это где? не вижу я у Datasource такого свойства. Или речь идет о SQLQuery?
-
Джентельмен
- постоялец
- Сообщения: 162
- Зарегистрирован: 16.10.2005 10:47:26
- Откуда: Украина Донбасс Краматорск
- Контактная информация:
Джентельмен писал(а):да! равно... а зделай вот так:
procedure TFormTryMySQL.OpenQueryButtonClick(Sender: TObject);
begin
Datasource1.DataSet := SQLQuery1;
SQLQuery1.Active := True;
если получитса скажеш...
обычно я часто так ошибался...
ну чтобы да, ... так таки нет ?:(
если не влом, объясни порядок вызовов (или подскажи где толково описано)
вот у меня сейчас
procedure TFormTryMySQL.OpenQueryButtonClick(Sender: TObject);
begin
SQLQuery1.SQL.Text := CommandEdit.Text;
SQLQuery1.Active := True;
SQLQuery1.Open;
Datasource1.DataSet := SQLQuery1;
ShowString('попытка выполнить запрос' + CommandEdit.Text);
....
пробовал уже разные комбинации напр.
сначала SQLQuery1.Open;
а потом SQLQuery1.Active := True;
сообщения выводятся что запрос выполнился, а грид все пустой...
пока что не понимаю логики, а почитать негде
-
Джентельмен
- постоялец
- Сообщения: 162
- Зарегистрирован: 16.10.2005 10:47:26
- Откуда: Украина Донбасс Краматорск
- Контактная информация:
а посмотри еще вот так:
SQLQuery1.Open;
MySQL50Connection1.Open;
потому что у меня так работает...
if s = 6 then
Begin
FIBDataSet1.SelectSQL.Text := 'Строка запроса';
End;
FIBDataSet1.Database := DataModule1.FIBDataBase1;
FIBDataSet1.Transaction := DataModule1.FIBTransaction1;
DataModule1.FIBDataBase1.Connected := True;
DataModule1.FIBTransaction1.Active := True;
FIBDataSet1.Active := True; // на вот эту строку обрати внимание...
после выполнения запроса я по новой все назначаю... у тебя должна быть такая же порблема...
или вышли исхоники на alexey@nikron.krm.net.ua самому интересно...
SQLQuery1.Open;
MySQL50Connection1.Open;
потому что у меня так работает...
if s = 6 then
Begin
FIBDataSet1.SelectSQL.Text := 'Строка запроса';
End;
FIBDataSet1.Database := DataModule1.FIBDataBase1;
FIBDataSet1.Transaction := DataModule1.FIBTransaction1;
DataModule1.FIBDataBase1.Connected := True;
DataModule1.FIBTransaction1.Active := True;
FIBDataSet1.Active := True; // на вот эту строку обрати внимание...
после выполнения запроса я по новой все назначаю... у тебя должна быть такая же порблема...
или вышли исхоники на alexey@nikron.krm.net.ua самому интересно...
-
GodDog
- незнакомец
- Сообщения: 6
- Зарегистрирован: 25.01.2007 18:16:52
- Откуда: Россия
- Контактная информация:
Возможно глупо так в лоб, но спрошу
пишу под виндой, мускул 5.0.18.
проблема в следующем. в dbgrid весь текст '???' (что касается русских букв), на сервере пробовал по умолчанию ставить и utf8, cp1251.. не помогает, при чем у TMySQLConnection50 есть св-во CharSet но такое ощушение что он даже не смотрит что ему туда пишут. пожалуйста подскажите, как быть?
пишу под виндой, мускул 5.0.18.
проблема в следующем. в dbgrid весь текст '???' (что касается русских букв), на сервере пробовал по умолчанию ставить и utf8, cp1251.. не помогает, при чем у TMySQLConnection50 есть св-во CharSet но такое ощушение что он даже не смотрит что ему туда пишут. пожалуйста подскажите, как быть?
