![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
поиск в поле MEMO через SQL
ankazh © (2012-09-24 01:03:00)Имеется БД в Акссесе. Поле RusWord табл Slovar имеет тип поле MEMO. Имеется Эдит, в котором ввожу нужное слова для поиска. Для текстовых полей поиск выполняется, а вот для поля MEMO нет. Здается, что для него нужно по особенному передавать переменную. Подскажите кто знает.
procedure TfmMain.Edit1Change(Sender: TObject);
var h1, h2:string ;
begin
h1:='%'+fmMain.Edit1.Text+'%';
h2:=QuotedStr(h1);
with fmDM.ADOQuerySlovar do
begin
DisableControls;
Close;
SQL.Clear;
if RadioButton1.Checked then SQL.Add('SELECT * from Slovar where Transkript like'+h2) else
if RadioButton2.Checked then SQL.Add('SELECT * from Slovar where RusWord like'+h2)
Open;
EnableControls;
end;
sniknik (2012-09-27 22:39:00) [1]> не заносил корректно текст
наоборот, он заносил КОРРЕКТНО, в том формате для которого предназначен и с которым работает.
не корректна твоя интерпретация, и возможно выбор компонент, в зависимости от ответа, которого от тебя ждали.
ankazh (2012-09-27 18:06:00) [2]в общем сделала через RichEdit и наступило мне счастье, но я так и не поняла почему DBRichEdit не заносил корректно текст в Аксесе в "поле MEMO".
sniknik (2012-09-27 17:02:00) [3]> rtf - формат хранения размеченных текстовых документов.
ну и? откуда следует необходимость записи в файл? или где я про это написал?
> Почему ж я ахинею несу?
потому, что про ахинею понял и среагировал, а все более менее значимое проигнорировал, либо придумал ему "свой смысл" ([20]).
> если ты имеешь ввиду
ничего из того, что бы думаешь я имею ввиду, я не имею ввиду. только то, что написал.
> Поэтому и спрашиваю.
а зачем спрашиваешь? почему не отвечаешь (тебя тоже кое о чем просили)/не изучаешь непонятное (разве нет?)/не нанимаешь уже программиста?.
какой смысл твоих вопросов? (ответы то все одно "мимо проходят")
brother (2012-09-27 16:58:00) [4]> rtf - формат хранения размеченныхтекстовых документов.
в твоем случае разметка нужна?
Плохиш (2012-09-27 16:45:00) [5]Kinder, Küche, Kirche.
ankazh (2012-09-27 15:47:00) [6]если ты имеешь ввиду, что нужно поставить в Аксесе, ртф формат, то скажу что я не знаю где его ставить в аксесе 2003. Поэтому и спрашиваю.
ankazh (2012-09-27 15:44:00) [7]
> sniknik
rtf - формат хранения размеченных текстовых документов. Почему ж я ахинею несу?
sniknik (2012-09-27 15:19:00) [8]вообще, не тупи, задавай вопросы правильно... основной вопрос - "нужен ли тебе rtf?" и если нет то нафига ты спрашиваешь как тебе с ним обращаться. если да... ну блин прочитай что нибудь, хотя бы о том что это, прежде, и вместо того чтобы нести ахинею.
sniknik (2012-09-27 15:15:00) [9]> это типа записывать в файл rtf ?
это типа записываетсяв форматеrtf, туда, где ты его читал (приведенная абракадабра). что с ним дальше будет, и писать ли это в файл... мне честно говоря пофигу, хотя не возражаю, это дело программиста который эти данные читает/пишет, и если ему нужно в файл то пусть пишет.
ankazh (2012-09-27 15:02:00) [10]
> sniknik
> внутреннее представление текста в rtf
это типа записывать в файл rtf ?
ankazh (2012-09-27 15:00:00) [11]
> Плохиш ©
не понимаю о чем Вы...
Плохиш (2012-09-27 14:57:00) [12]
> db RichEdit подключено к одному из полей таблицы. Когда вписываю
> туда слово, то dbGrid отображает его нормально, а вот в
> Аксесе заносится абра-кадабра!!!
Вы бы хоть почитали что-нибуть, про форматы данных, к примеру.
Обезьянки-кодеры какие-то.
sniknik (2012-09-27 14:57:00) [13]> а вот в Аксесе заносится абра-кадабра!!!
внутреннее представление текста в rtf... записываешь через db RichEditчитай им же, он разберет. или поменяй на мемо.
ankazh (2012-09-27 14:50:00) [14]...и что сделать, меняла галочки с "Сжатие Юникод" - ситуация не поменялась
Anatoly Podgoretsky (2012-09-27 14:39:00) [15]> ankazh (27.09.2012 14:12:09) [9]
В Акцессе это поле в Юникоде.
ankazh (2012-09-27 14:36:00) [16]ой, простите не dbGrid отображает нормально слово, а dbRichEdit, а вот в dbGrid эта запись как суржик.
ankazh (2012-09-27 14:12:00) [17]Нашла проблему, вот только не знаю почему так происходит. dbRichEdit подключено к одному из полей таблицы. Когда вписываю туда слово, то dbGrid отображает его нормально, а вот в Аксесе заносится абра-кадабра!!! Что не так делаю?
{\rtf1\fbidis\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset177 Adobe Hebrew;}{\f1\fnil\fcharset204 Tahoma;}}
\viewkind4\uc1\pard\ltrpar\lang1037\f0\rtlch\fs44\'f8\'e0\'e9\'f8\'e0\'e9\'e9\'f 8\'e0\'e9\'f8\'e0 - \lang1049\f1\ltrch\fs22\'ef\'f3\'f3\'e5\'e5\'ea\'ef\'ea\'f3\'ef\'f3\'ea\f0\rtlch \fs44\par
sniknik (2012-09-24 11:47:00) [18]как пример различия (текст работает, мемо нет), кусочек хелпа из акксесс
Использование атрибута WITH COMPRESSION допускается только для типов данных CHARACTER и MEMO (он же TEXT) и их синонимов.
Атрибут WITH COMPRESSION был добавлен к столбцам CHARACTER вследствие перехода к формату представления знаков Юникод. Каждый знак в формате Юникод всегда кодируется с помощью двух байтов. Для существующих баз данных Microsoft® Jet, содержащих в основном символьные данные, это может означать увеличение размера файла базы данных примерно в два раза после преобразования в формат Microsoft Jet версии 4.0. Тем не менее, для многих наборов символов, ранее обозначавшихся как однобайтовые наборы символов (SBCS), представление в формате Unicode (SBCS) может быть без труда сжато до одного байта. Если столбец CHARACTER был определен с этим атрибутом, то при сохранении в нем данных осуществляется их автоматическое сжатие, а при извлечении данных - обратная операция.
Столбцы MEMO также могут быть определены для хранения данных в сжатом формате. Однако при этом действует одно ограничение. Сжатию подвергаются только те столбцы типа MEMO, которые в сжатом виде имеют размер не более 4096 байтов. Все остальные столбцы MEMO не сжимаются. Это означает, что для данной таблицы и данного столбца MEMO этой таблицы одни данные могут быть сжаты, а другие - нет.
ошибка конечно не здесь, а в программе, это как пример того, что написанное без учета/криво/не стандартно, может являться глюком несмотря на то, что "ну вот там то работает!".
sniknik (2012-09-24 11:40:00) [19]раз "проблема" только с русским, то причина в/"связана с" юникодом скорее всего.
MonoLife (2012-09-24 09:31:00) [20]я сказал приведенныйздесь код, а не то, что у вас там компилируется..
> if RadioButton2.Checked then SQL.Add('SELECT * from Slovar
> where RusWord like'+h2) ;
> Open;
Да и пробел не помешает ... like '+...
И использовать рекомендуется TADODataSet
см. [2] ищите причину