Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Внизне отрабатывается селект к базе(( Найти похожие ветки
← →
-=snoop=- © (2005-08-03 09:26) [0]привет всем, кака-то проблема дурацкая(), есть база *.dbf в ней имеется поле code , которое содержит как русские так и латинские буквы, ситыауия в том, что когда запрос имеет вид
lADO2LoginPro.SQL.Add
("select * from login.pro where ltrim(rtrim(code)) = "+""""+"ffffff"+"""") ;
....
запрос отрабатывается, а если вот так
lADO2LoginPro.SQL.Add
("select * from login.pro where ltrim(rtrim(code)) like "+""""+"кимли"+"""") ;
то (inttostr(lADO2LoginPro.RecordCount)) возиращает значение 0, подскажите, как решить трабл??
← →
Dell3r © (2005-08-03 09:37) [1]Я что-то про + не понял. Зачем столько апострофов?
← →
Johnmen © (2005-08-03 09:40) [2]Читать LocalSQL.hlp на предмет изучения применения LIKE.
← →
evvcom © (2005-08-03 09:42) [3]А ты уверен, что в login.pro имеется строка с code="кимли"?
Обычно like используют, когда хотят найти записи содержащие данную строку, а не точно ей соответствуют.
← →
Dell3r © (2005-08-03 09:46) [4]lADO2LoginPro.SQL.Add
("select * from login.pro where ltrim(rtrim(code)) like "кимли") ;
← →
-=snoop=- © (2005-08-03 09:49) [5]простите господа...
не "like" , а "="
lADO2LoginPro.SQL.Add
("select * from login.pro where ltrim(rtrim(code)) = "+""""+"кимли"+"""") ;
0 а строка есть 100% я ее сам туда пихал.
1 апострофов много, для того чтоб SQL воспринял """"+"кимли"+"""" как "кимли", а не как переменную кимли
← →
-=snoop=- © (2005-08-03 09:58) [6]2 Dell3r ©
вообще кусок кода вот как выглядит
....
lcUsrName :=""""+trim(lADO2USERPRO.FieldValues["Code"])+"""" ;
lcGrNm := """"+trim(lADO2USERPRO.FieldValues["Grupp"])+"""" ;
lADO2LoginPro.SQL.Clear() ;
lADO2LoginPro.SQL.Add
("select * from login.pro where ltrim(rtrim(code)) like "+lcUsrName)
....
lcUsrName = вычисляется в цикле, а "кимли" так для опытов, проверить
← →
Соловьев © (2005-08-03 10:02) [7]
> привет всем, кака-то проблема дурацкая(), есть база *.dbf
> в ней имеется поле code
это не база дурацкая а прогер который так говорит, тем более посмотрев код
> lcUsrName :=""""+trim(lADO2USERPRO.FieldValues["Code"])+""""
> ;
> lcGrNm := """"+trim(lADO2USERPRO.FieldValues["Grupp"])+""""
> ;
> lADO2LoginPro.SQL.Clear() ;
> lADO2LoginPro.SQL.Add
> ("select * from login.pro where ltrim(rtrim(code))
> like "+lcUsrName)
убеждаешся в этом еще раз... читать:
1. TQeruy.Parameters
2. О провйдере через который конектишся.
3. Почему АДО? когда БДЕ с этим лучше будет работать?
← →
-=snoop=- © (2005-08-03 10:11) [8]0 не база дурацкая, а проблема...
2 почему ADO? потому что пользовался ADO и ни каких проблем не возникало, тем более с кодировкой
← →
-=snoop=- © (2005-08-03 10:15) [9]Соловьев © а что с кодом-то?
← →
Sergey13 © (2005-08-03 10:17) [10]2 -=snoop=- ©
Воспользуйся советом из [2]
← →
-=snoop=- © (2005-08-03 10:24) [11]вот всегда так, простите за мой фр. обосрут, а что конкретно не говорят...
← →
-=snoop=- © (2005-08-03 10:39) [12]по поводу синтаксиса Like Ничего нового не увидел...
lADO2LoginPro.SQL.Add
("select * from login.pro where (code LIKE "+"""+"%фффффф%"+"""+")")
вернул 0 записей
← →
Sergey13 © (2005-08-03 10:59) [13]2[12] -=snoop=- © (03.08.05 10:39)
>по поводу синтаксиса Like Ничего нового не увидел...
Но % добавил. 8-)
>вернул 0 записей
Значит разбирайся с регистром данных в поле CODE.
← →
evvcom © (2005-08-03 11:37) [14]
> "select * from login.pro where (code LIKE "+"""+"%фффффф%"+"""+")"
Не проще ли:
"select * from login.pro where (code LIKE "%фффффф%")"? Чего извращаться?
← →
Ольга (2005-08-03 12:05) [15]
> содержит как русские так и латинские буквы
Вопрос, я так поняла, не в синтаксисе Like, а в кодировке?
Не выбираются только русские строки или без разницы?
← →
-=snoop=- © (2005-08-03 13:17) [16]2Ольга только русские
2evvcom © "%фффффф%" = это просто пример с русскими буквами, а так у меня стоит выч.переменная...
с регистром вроде все Ок, но проверю...
← →
-=snoop=- © (2005-08-03 14:00) [17]чегото вообСче гон...
вот кусок кода
for s := 1 to lADO2USERPRO.RecordCount do
begin
lADO2USERPRO.RecNo := s ;
lcUsrName :=lADO2USERPRO.FieldValues["Code"] ;
//lcUsrName :=""""+trim(lADO2USERPRO.FieldValues["Code"])+"""" ;
lcGrNm := """"+trim(lADO2USERPRO.FieldValues["Grupp"])+"""" ;
lADO2LoginPro.SQL.Clear() ;
showmessage(upper(lcUsrName)) ;
(скорее всего понятно всем что он делает)
в общем трабл такой , что поле "Code" содержит в себе всЁ теже русские и английские фразы, ды вот
showmessage(upper(lcUsrName)) ;
отрабатывается только на английских фразах, а русские как были в таблице так и идут в том же регистре((((
может у меня каки-нить глобальные настройки не верные???
← →
ANB © (2005-08-03 14:05) [18]1. Не изгаляйся с кавычками, а юзай параметры
2. AnsiUpperCase - это для Делфи
3. В FoxPro - функция upper с русским буквами может не работать (во всяком случае - в досовском). Я не знаю движка, который это правит (может ща кто и подскажет), но тупой способ борьбы - написать свою.
← →
evvcom © (2005-08-03 14:05) [19]
> "%фффффф%" = это просто пример с русскими буквами, а так
> у меня стоит выч.переменная...
Используй параметр для этого, а не вычисл.переменную. Можно будет запрос создать в designtime и не заниматься ерундой с постоянным динамическим его формированием. Тогда и кавычки не потребутся, и прочее, прочее, прочее...
> с регистром вроде все Ок, но проверю...
where upper(code) like upper(:Code)
← →
evvcom © (2005-08-03 14:09) [20]
> но тупой способ борьбы - написать свою
Достали меня уже подобными фразами. Тупыми способами пользуются тупые люди, если кто себя относит к ним, то пользуйтесь. А написать свою - это вовсе не тупой способ.
← →
ANB © (2005-08-03 14:13) [21]
> evvcom © (03.08.05 14:09) [20]
- тогда я тупой, так как этим способом обычно и пользуюсь. Только функцию придется в фоксе писать. И таскать ее везде.
А чего ты седня злой такой ? На обед не ходил ?
← →
-=snoop=- © (2005-08-03 14:25) [22]ANB ©, спасибо за AnsiUpperCase
evvcom © я не умею пользоваться параметрами ибо совсем недавно пишу на дельфях
← →
sniknik © (2005-08-03 14:34) [23]ANB © (03.08.05 14:13) [21]
> Только функцию придется в фоксе писать. И таскать ее везде.
а как ты ее к ODBC/OLEDB-шному драйверу подключаеш? чтобы он ее использовал, т.е. коннекте к нему из дельфей эту функцию можно было в запросах использовать.
не в этом случае, конечно, но это можно использовать.
← →
-=snoop=- © (2005-08-03 14:34) [24]написал вот такой код
("insert into login.pro (code) values ("ыыы")") ;
вставил мне в таб. всяких закарюк, посмотрел кадировку таб = 866, как победить? подскажите?
P.S.
2 ANB © честно говоря тут все не пышут добролюбием....
← →
ANB © (2005-08-03 14:35) [25]
> -=snoop=- © (03.08.05 14:25) [22]
Ими пользоваться намного проще, чем кавычками. И полезнее.
Вот так :
в тело запроса пихаешь имя переменной с двоеточием, примерно вот так :
Query.SQL.Text := "select * from Tbl where ID = :MyID";
Затем пихаешь в параметр значение :
Query.ParamByName("MyID").AsInteger := 5;
Выполняешь запрос :
Query.Open;
В списке свойств ParamByName("MyID"). есть еще много As..., на почти все случаи в начинающей жизни.
Удобно - тело запроса нужно менять только если приспичит. Можно его заранее препарировать, работать будет быстрее. Не надо мучится с кавычками и непечатными символами в строках.
Все имхо. И неполно. Подробнее и правильнее - в Ф1.
ЗЫ. В DOA с параметрами так не работают.
← →
ANB © (2005-08-03 14:40) [26]
> sniknik © (03.08.05 14:34) [23]
- никак. Я visual foxpro triber (кажись так называлось) пользовался. Я про багу с аппер я еще в клиппере знал. Там у меня была своя функция. Споткнулся - некогда было разбираться (проект горел), сделал затычку. Кидаешь текст процедуры в рабочую папку, драйвер ее сам компиляет при использовании в запросах. Грю же - тупой способ. Может кто лучше знает ?
> -=snoop=- © (03.08.05 14:34) [24]
- у тебя проблема с кодировкой. Имхо - лучше не юзать фоксовские таблицы вместе с делфи. А чем смотришь ? И переделай на параметр.
← →
-=snoop=- © (2005-08-03 14:41) [27]хе)) поменял кодировку в таб.на 1251 и
("insert into login.pro (code) values ("ыыы")") ;
отработал нормал, только вот похерились все прежние строки написанный на русском...
встает сл.вопрос, кто нить работал с DOS кодировкой)))
2 ANB © спасиб!освою!!
← →
ANB © (2005-08-03 14:44) [28]
> -=snoop=- © (03.08.05 14:41) [27]
Ты откуда их писал ? (прежние строки). Залезь в дбф честной просмотрялкой (фаром, например) и определи, в какой кодировке у тебя были старые строки, в какой стали новые. Если в разной - ты злобный Буратино и все сломал. Тогда немедленно грохни свою добавленную строку.
← →
-=snoop=- © (2005-08-03 14:48) [29]да я б с радостью не юзать хотяб ДОСовые таблици, но пишу под БЭСТ, поэтому деться некуда....
Смотрю? смотря что сами таблици VFP9.0 или wDBFview(http://www.gendalf.ru)
← →
evvcom © (2005-08-03 14:50) [30]
> А чего ты седня злой такой ? На обед не ходил ?
Да нет, на обед сходил. Меня на работе достал один типа начальник фразой "Берешь и тупо копируешь". В его стиле Copy/Paste пользоваться нежели функцию написать. Вот я и сорвался немного. :)
Народ! Не употребляйте эту дурацкую фразу, она меня бесит.
← →
-=snoop=- © (2005-08-03 15:03) [31]чегот с параметрами не выходить
lADO2LoginPro.SQL.Text := "insert into login.pro (code) values (:lcUsrName)" ;
lADO2LoginPro.Parameters.ParamByName("lcUsrName") := "жжж" ;
а в хелпе чегот не нарылся, плохохо смотрел, день сегодня не только у evvcom © плох , у меня вон на крыше оптику разрубили))), так что я как спайдермен на 35градусной жаре на крыше лазил.........
← →
evvcom © (2005-08-03 15:10) [32]
> день сегодня не только у evvcom © плох
Нормальный у меня день.
> чегот с параметрами не выходить
Сделай запрос в designtime, посмотри, чтобы у параметров были определены типы данных и вход/выход. ParamByName проскочит на ура. Потом уже будешь динамически генерить, если захочешь, но мое имхо, не делай так.
← →
Dell3r © (2005-08-03 15:17) [33]После скобки перед := поставь .AsString может потянет
← →
ANB © (2005-08-03 15:19) [34]
> -=snoop=- © (03.08.05 15:03) [31]
Смотреть пример и хелп. Вдумчиво и внимательно. Я для кого про As... писал ? AsString влепи.
← →
-=snoop=- © (2005-08-04 05:59) [35]про As... писал, да...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.013 c