Показать полную графическую версию : [решено] Получить HTML код из TwebBrowser
Люди может кто знает как получить весь HTML код из TwebBrowser (обязательно в виде строки) ? Необходимо записать его в поле AdoTable.
Кстати как в ADOTable правильно заносить данные :) в уже существующее поле?
Любезный
04-06-2011, 18:59
Хм... ADOTable ф топку... Используй ADOQuery и добавляй через SQL-запрос UPDATE.
ADOTable конечно в топку, но
1. Большая часть программы уже написана (лень переписывать из за таких мелочей)
2. С ADOQuery близко не знаком к сожалению.
P.S. Может подскажите как построить SQL запрос в ADOQuery (с использованием LIKE наверно и текста введенного пользователем) чтобы организовать поиск в таблице по текстовому полю ?
И как получить и обработать результат? (В результате ведь может быть не одна запись)
Любезный
05-06-2011, 11:19
1. Про редактирование через ADOQuery. Для этого надо использовать SQL-запрос к базе данных. Надо учитывать, что ADO работает с разными СУБД, поэтому синтаксис SQL-запросов может отличаться в зависимости от конкретной СУБД. Захочешь попробовать - ТОЛЬКО НЕ НА ЖИВОЙ БАЗЕ! Работай на копии. Ну или хотя бы сделай бэкап.
Предположим, у нас в базе данных есть таблица с именем TBLNAME, которое имеет ключевое поле KEYFLD и строковое поле TXTFLD. Запрос на обновление одного строкового поля, в котором значение ключевого поля равно 1, должен выглядеть так:
UPDATE TBLNAME SET TXTFLD='новое значение' WHERE KEYFLD=1;
Как это использовать? Свойство Connection компонента TADOQuery настраивается так же, как и в TADOTable. Лучше использовать разные компоненты TADOQuery на чтение и запись; причём компонент для записи не нужно связывать с DataSource и DBGrid. Пусть для записи у нас будет компонент ADOQuery1. Вот код обновления (соединение с БД должно быть установлено, а читающий набор данных лучше закрыть):
with ADOQuery1
do begin
SQL.Text:='UPDATE TBLNAME SET TXTFLD="новый текст" '
+'WHERE KEYFLD=1;';
ExecSQL;
Close;
end;
После этого можно обновить читающий набор данных путём его переоткрытия.
Вообще я не сторонник редактирования данных прямо в DBGrid из-за ненадёжности связки DBGrid-DataSource-Table. Рекомендую всегда делать это в отдельном окне, используя SQL-запрос.
2. Поиск по текстовому полю - простейшая задача, но я бы делал её в отдельном окне и отдельным компонентом ADOQuery, сцепленным с компонентом DBGrid, а лучше даже ListView. Пусть у нас будет набор ADOQuery2, связанный с DataSource и DBGrid, а данные таблицы - те же. Единственное что - мы будем использовать параметры, а директива CONTAINING не знаю, всеми ли СУБД поддерживается. С Firebird работает, с другими не проверял. Данные мы здесь введём в запрос через параметры:
with ADOQuery2
do begin
SQL.Text:='SELECT KEYFLD, TXTFLD FROM TBLNAME '
+'WHERE TBLNAME CONTAINING :M1;';
ParamByName ('M1').AsString:=Edit1.Text;
Open;
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.