Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Вывести результат SQL зароса в RichEdit.


Автор: F1reF0x 6.9.2007, 12:27
Есть база MySQL. Есть RichEdit. Надо вывести в RichEdit базу (сети не подходят потому что нужно форматирование т.е что то выделенно что то не отображать и тд). Соединяюсь с БД хорошо, запросы на создание проходят тоже хорошо, насколько я понимаю вот это конструкция:

Код

  Query.SQL.Clear;
  Query.SQL.Add('SELECT * FROM test');
  Query.ExecSQL(true);


Тоже отлично работает. Но на выводит результат в DataSoruce. Как мне научить выводить её в RichEdit?

Автор: Akella 6.9.2007, 13:45
а потом циклом по квере идешь
Код

//выводим 2 поля
while not Query.eof do begin
  re1.lines.add(Query.fields[0].asString + 'разделитель'+ Query.fields[1].asString);
  Query.next;
end;

Автор: F1reF0x 6.9.2007, 14:54
Код

  Query.SQL.Clear;
  Query.SQL.Add('SELECT * FROM test');
  Query.ExecSQL(true);
  RichEdit1.Lines.Add(Query.Fields[1].AsString);


Не работает. Всмысле выводим два поля? Код я написал для пример что бы хоть что нибудь из результата выполнения увидеть. На этот код пишет List index of bounds. Хотя строки есть.

Автор: Anark1 6.9.2007, 15:13
Для оператора SELECT лучше использовать 

Код

Query.Open()


Автор: F1reF0x 6.9.2007, 15:37
Буду использовать smile но вопрос в силе, как мне управлять содержимым результата запроса?

Автор: Rodman 6.9.2007, 15:37
Цитата(F1reF0x @  6.9.2007,  14:54 Найти цитируемый пост)
List index of bounds

обращаешься к не существующему индексу.

В таблице TEST скока полей???

Код

Query.SQL.Clear;
Query.SQL.Add('SELECT FieldName1, FieldName2 FROM test');//индексы FieldName1 = 0, FieldName2 = 1.
Query.Open;
while not Query.eof do 
begin
  re1.lines.add(Query.fields[0].asString + '|'+ Query.fields[1].asString);
  Query.next;
end;

и будет тебе счастье!

Добавлено через 30 секунд
Цитата(F1reF0x @  6.9.2007,  15:37 Найти цитируемый пост)
управлять содержимым результата запроса? 

по подробнее

Автор: F1reF0x 6.9.2007, 15:48
2 id и test

rel = RichEdit?

Добавлено через 2 минуты и 32 секунды
Спасибо больше, все работает. Тему пока что не закрывайте т.к могут появиться вопросы по ходу.

Автор: Rodman 6.9.2007, 15:59
Цитата(F1reF0x @  6.9.2007,  15:48 Найти цитируемый пост)
2 id и test

rel = RichEdit?

шаришь
Код

Query.SQL.Clear;
Query.SQL.Add('SELECT id, test FROM test');
Query.Open;
while not Query.eof do 
begin
  re1.lines.add(Query.fields[0].asString + '|'+ Query.fields[1].asString);
  Query.next;
end;

Автор: F1reF0x 7.9.2007, 09:16
Теперь такая проблема не могу сделать запись в таблицу.

Код

MainForm.Query.SQL.Add('NSERT INTO `base` (`id`, `Firma`, `Dlojnost`, `Oplata`, `Treb`, `Sex`, `Raij`, `Addres`, `Phone`, `Contact`, `Cat`, `AData`) VALUES ('''', ''Òåñò'', ''Òåñò'', ''Òåñò'', '''', '''', '''', '''', '''', '''', '''', ''0000-00-00'')');

Автор: F1reF0x 7.9.2007, 20:23
Никто разве с такой проблемой не сталкивался?

Автор: Riddler 7.9.2007, 23:42
Цитата

Код

MainForm.Query.SQL.Add('NSERT INTO `base` (`id`, `Firma`, `Dlojnost`, `Oplata`, `Treb`, `Sex`, `Raij`, `Addres`, `Phone`, `Contact`, `Cat`, `AData`) VALUES ('''', ''Òåñò'', ''Òåñò'', ''Òåñò'', '''', '''', '''', '''', '''', '''', '''', ''0000-00-00'')');



Ну если ты скопировал как есть то, в самом начале пропустил букву "I"
Вставкой записи занимается команда Insert
Теперь два варианта развития событий, а что говорит SQL-сервер?
Если ошибку, то какую?
А если ничего то после объявления
надо приписать
MainForm.Query.ExecSQL;
Да и еще, а значение
MainForm.Query.SQL
пустое или там уже содержится запрос?
Ты добавляешь новую строку запроса, не очищая старую.

Автор: Akella 10.9.2007, 07:54
Зачем ты `base` в кавычках пишешь? И зачем имена полей в кавычках пишешь?

Автор: Rodman 10.9.2007, 08:29
Цитата(F1reF0x @  7.9.2007,  09:16 Найти цитируемый пост)
Теперь такая проблема не могу сделать запись в таблицу.

 ошибку выдает или не добавляются данные?

Автор: F1reF0x 10.9.2007, 22:36
С этими проблемами разобрался =) теперь не работает по сети. даже пакет (судя по значкам в трее) не идет :(
Соединяюсь так:

Код

  with SQLConnection1 do
  begin
    ConnectionName := 'Connection';
    DriverName := 'MySQL';
    LibraryName := 'dbexpmysql.dll';
    VendorLib := 'libmySQL.dll';
    GetDriverFunc := 'getSQLDriverMYSQL';
    Params.Add( 'HostName=' + Copy(MySqlCon.Strings[3], 9, 255));
    Params.Add( 'User_Name=' + Copy(MySqlCon.Strings[0], 7, 255));
    Params.Add( 'Password=' + Copy(MySqlCon.Strings[1], 11, 255));
    Params.Add( 'Database='  + Copy(MySqlCon.Strings[2], 10, 255));
    LoginPrompt := TRUE;
    try
     Open;
    Except On Exception Do
     begin
      Application.MessageBox( 'К сожалению, соединиться с MySQL-сервером не удалось. Проверьте правильность ввода всех параметров.' , 'Ошибка соединения' , 0 );
      Status.Panels.Add.Text:= 'Статус: Не удается соединиться с базой MySql';
      exit;
     end;
    end;
  end;
  Status.Panels.Add.Text:= 'Статус: Подключено';


У меня на денвере работает. На другом компьютере с установленной MySQL не может подключиться.

Автор: Vas 11.9.2007, 06:44
А может вместо:
Код

LibraryName := 'dbexpmysql.dll';

надо
Код

LibraryName := 'libmysql.dll';

Смотри самую первую тему в разделе с пометкой "Важно".

Автор: SergeBS 11.9.2007, 07:32
F1reF0x
Права доступа у MySQL зависят от того, удаленно подключаешься или локально. Заведи тестового юзера, который может и так, и сяк подключаться. И проверь libmysql.dll, как Vas советует. 

Автор: F1reF0x 11.9.2007, 09:49
Ок. Проблем в подключением у меня на компьютере на деневере нет. Не работает у заказчиков на MySQL. 

    LibraryName := 'dbexpmysql.dll';
    VendorLib := 'libmySQL.dll';

У меня же вроде написано что либ му скл использовать... но попробую. 
Первую тему смотрел, библиотека у меня оттуда.

Добавлено через 2 минуты и 58 секунд
LibraryName := 'dbexpmysql.dll';
Отвечает за загрузку драйвера, без него ругается что не может загрузить драйвер SQLDriverMYSQL.
Щас попробую сложить в  папку с софтом эту длл и подключиться.

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