Форум: "Начинающим";
Текущий архив: 2013.03.31;
Скачать: [xml.tar.bz2];
Внизпоиск в поле MEMO через SQL Найти похожие ветки
← →
ankazh © (2012-09-24 01:03) [0]Имеется БД в Акссесе. Поле 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;
← →
MonoLife © (2012-09-24 06:59) [1]приведенный код не скомпилируется.
← →
sniknik © (2012-09-24 07:58) [2]> Здается, что для него нужно по особенному передавать переменную.
операция like в access не отличается для текстовых полей и мемо, переменные задаются абсолютно одинаково.
причина в другом.
← →
ankazh © (2012-09-24 09:07) [3]
> MonoLife © (24.09.12 06:59) [1]
> приведенный код не скомпилируется.
>
>
компилируется, и даже выдает поиск, только по текстовому полю, а по Мемо не выдает
← →
ankazh © (2012-09-24 09:19) [4]интересный факт, по этому полю слова не находит, а вот скобочки находятся, странно.... Что может быть?
← →
ankazh © (2012-09-24 09:27) [5]и еще, когда вписываю текст на английском в Этом поле, то поиск происходит, на русском языке не работает. И находит только если слово целиком вписала, хотя должно искать все слова содержащие вводимые слоги.
← →
MonoLife © (2012-09-24 09:31) [6]я сказал приведенный здесь код, а не то, что у вас там компилируется..
> if RadioButton2.Checked then SQL.Add("SELECT * from Slovar
> where RusWord like"+h2) ;
> Open;
Да и пробел не помешает ... like "+...
И использовать рекомендуется TADODataSet
см. [2] ищите причину
← →
sniknik © (2012-09-24 11:40) [7]раз "проблема" только с русским, то причина в/"связана с" юникодом скорее всего.
← →
sniknik © (2012-09-24 11:47) [8]как пример различия (текст работает, мемо нет), кусочек хелпа из акксесс
Использование атрибута WITH COMPRESSION допускается только для типов данных CHARACTER и MEMO (он же TEXT) и их синонимов.
Атрибут WITH COMPRESSION был добавлен к столбцам CHARACTER вследствие перехода к формату представления знаков Юникод. Каждый знак в формате Юникод всегда кодируется с помощью двух байтов. Для существующих баз данных Microsoft® Jet, содержащих в основном символьные данные, это может означать увеличение размера файла базы данных примерно в два раза после преобразования в формат Microsoft Jet версии 4.0. Тем не менее, для многих наборов символов, ранее обозначавшихся как однобайтовые наборы символов (SBCS), представление в формате Unicode (SBCS) может быть без труда сжато до одного байта. Если столбец CHARACTER был определен с этим атрибутом, то при сохранении в нем данных осуществляется их автоматическое сжатие, а при извлечении данных - обратная операция.
Столбцы MEMO также могут быть определены для хранения данных в сжатом формате. Однако при этом действует одно ограничение. Сжатию подвергаются только те столбцы типа MEMO, которые в сжатом виде имеют размер не более 4096 байтов. Все остальные столбцы MEMO не сжимаются. Это означает, что для данной таблицы и данного столбца MEMO этой таблицы одни данные могут быть сжаты, а другие - нет.
ошибка конечно не здесь, а в программе, это как пример того, что написанное без учета/криво/не стандартно, может являться глюком несмотря на то, что "ну вот там то работает!".
← →
ankazh © (2012-09-27 14:12) [9]Нашла проблему, вот только не знаю почему так происходит. 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
← →
ankazh © (2012-09-27 14:36) [10]ой, простите не dbGrid отображает нормально слово, а dbRichEdit, а вот в dbGrid эта запись как суржик.
← →
Anatoly Podgoretsky © (2012-09-27 14:39) [11]> ankazh (27.09.2012 14:12:09) [9]
В Акцессе это поле в Юникоде.
← →
ankazh © (2012-09-27 14:50) [12]...и что сделать, меняла галочки с "Сжатие Юникод" - ситуация не поменялась
← →
Плохиш © (2012-09-27 14:57) [13]
> dbRichEdit подключено к одному из полей таблицы. Когда вписываю
> туда слово, то dbGrid отображает его нормально, а вот в
> Аксесе заносится абра-кадабра!!!
Вы бы хоть почитали что-нибуть, про форматы данных, к примеру.
Обезьянки-кодеры какие-то.
← →
sniknik © (2012-09-27 14:57) [14]> а вот в Аксесе заносится абра-кадабра!!!
внутреннее представление текста в rtf... записываешь через dbRichEdit читай им же, он разберет. или поменяй на мемо.
← →
ankazh © (2012-09-27 15:00) [15]
> Плохиш ©
не понимаю о чем Вы...
← →
ankazh © (2012-09-27 15:02) [16]
> sniknik
> внутреннее представление текста в rtf
это типа записывать в файл rtf ?
← →
sniknik © (2012-09-27 15:15) [17]> это типа записывать в файл rtf ?
это типа записывается в формате rtf, туда, где ты его читал (приведенная абракадабра). что с ним дальше будет, и писать ли это в файл... мне честно говоря пофигу, хотя не возражаю, это дело программиста который эти данные читает/пишет, и если ему нужно в файл то пусть пишет.
← →
sniknik © (2012-09-27 15:19) [18]вообще, не тупи, задавай вопросы правильно... основной вопрос - "нужен ли тебе rtf?" и если нет то нафига ты спрашиваешь как тебе с ним обращаться. если да... ну блин прочитай что нибудь, хотя бы о том что это, прежде, и вместо того чтобы нести ахинею.
← →
ankazh © (2012-09-27 15:44) [19]
> sniknik
rtf - формат хранения размеченных текстовых документов. Почему ж я ахинею несу?
← →
ankazh © (2012-09-27 15:47) [20]если ты имеешь ввиду, что нужно поставить в Аксесе, ртф формат, то скажу что я не знаю где его ставить в аксесе 2003. Поэтому и спрашиваю.
← →
Плохиш © (2012-09-27 16:45) [21]Kinder, Küche, Kirche.
← →
brother © (2012-09-27 16:58) [22]> rtf - формат хранения размеченных текстовых документов.
в твоем случае разметка нужна?
← →
sniknik © (2012-09-27 17:02) [23]> rtf - формат хранения размеченных текстовых документов.
ну и? откуда следует необходимость записи в файл? или где я про это написал?
> Почему ж я ахинею несу?
потому, что про ахинею понял и среагировал, а все более менее значимое проигнорировал, либо придумал ему "свой смысл" ([20]).
> если ты имеешь ввиду
ничего из того, что бы думаешь я имею ввиду, я не имею ввиду. только то, что написал.
> Поэтому и спрашиваю.
а зачем спрашиваешь? почему не отвечаешь (тебя тоже кое о чем просили)/не изучаешь непонятное (разве нет?)/не нанимаешь уже программиста?.
какой смысл твоих вопросов? (ответы то все одно "мимо проходят")
← →
ankazh © (2012-09-27 18:06) [24]в общем сделала через RichEdit и наступило мне счастье, но я так и не поняла почему DBRichEdit не заносил корректно текст в Аксесе в "поле MEMO".
← →
sniknik © (2012-09-27 22:39) [25]> не заносил корректно текст
наоборот, он заносил КОРРЕКТНО, в том формате для которого предназначен и с которым работает.
не корректна твоя интерпретация, и возможно выбор компонент, в зависимости от ответа, которого от тебя ждали.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.31;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.003 c