Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.31;
Скачать: CL | DM;

Вниз

поиск в поле 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.009 c
2-1348575201
ankazh
2012-09-25 16:13
2013.03.31
Раскладка клавиатуры


15-1354371990
AlexKniga
2012-12-01 18:26
2013.03.31
Использование ICQ и права на текст сообщений


15-1354653003
Юрий
2012-12-05 00:30
2013.03.31
С днем рождения ! 5 декабря 2012 среда


2-1348238497
n_sch
2012-09-21 18:41
2013.03.31
Выборка данных из файла


15-1354711862
Error0xDEADBEEF
2012-12-05 16:51
2013.03.31
VirtualBox