![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не отрабатывается селект к базе(( [D7, dBase, FoxPro]
-=snoop=- © (2005-08-03 09:26:00)привет всем, кака-то проблема дурацкая(), есть база *.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, подскажите, как решить трабл??
-=snoop=- (2005-08-04 05:59:00) [1]про As... писал, да...
ANB (2005-08-03 15:19:00) [2]
> -=snoop=- © (03.08.05 15:03) [31]
Смотреть пример и хелп. Вдумчиво и внимательно. Я для кого про As... писал ? AsString влепи.
Dell3r (2005-08-03 15:17:00) [3]После скобки перед := поставь .AsString может потянет
evvcom (2005-08-03 15:10:00) [4]
> день сегодня не только у evvcom © плох
Нормальный у меня день.
> чегот с параметрами не выходить
Сделай запрос в designtime, посмотри, чтобы у параметров были определены типы данных и вход/выход. ParamByName проскочит на ура. Потом уже будешь динамически генерить, если захочешь, но мое имхо, не делай так.
-=snoop=- (2005-08-03 15:03:00) [5]чегот с параметрами не выходить
lADO2LoginPro.SQL.Text := 'insert into login.pro (code) values (:lcUsrName)' ;
lADO2LoginPro.Parameters.ParamByName('lcUsrName') := 'жжж' ;
а в хелпе чегот не нарылся, плохохо смотрел, день сегодня не только у evvcom © плох , у меня вон на крыше оптику разрубили))), так что я как спайдермен на 35градусной жаре на крыше лазил.........
evvcom (2005-08-03 14:50:00) [6]
> А чего ты седня злой такой ? На обед не ходил ?
Да нет, на обед сходил. Меня на работе достал один типа начальник фразой "Берешь и тупо копируешь". В его стиле Copy/Paste пользоваться нежели функцию написать. Вот я и сорвался немного. :)
Народ! Не употребляйте эту дурацкую фразу, она меня бесит.
-=snoop=- (2005-08-03 14:48:00) [7]да я б с радостью не юзать хотяб ДОСовые таблици, но пишу под БЭСТ, поэтому деться некуда....
Смотрю? смотря что сами таблици VFP9.0 или wDBFview( http://www.gendalf.ru)
ANB (2005-08-03 14:44:00) [8]
> -=snoop=- © (03.08.05 14:41) [27]
Ты откуда их писал ? (прежние строки). Залезь в дбф честной просмотрялкой (фаром, например) и определи, в какой кодировке у тебя были старые строки, в какой стали новые. Если в разной - ты злобный Буратино и все сломал. Тогда немедленно грохни свою добавленную строку.
-=snoop=- (2005-08-03 14:41:00) [9]хе)) поменял кодировку в таб.на 1251 и
('insert into login.pro (code) values ("ыыы")') ;
отработал нормал, только вот похерились все прежние строки написанный на русском...
встает сл.вопрос, кто нить работал с DOS кодировкой)))
2 ANB © спасиб!освою!!
ANB (2005-08-03 14:40:00) [10]
> sniknik © (03.08.05 14:34) [23]
- никак. Я visual foxpro triber (кажись так называлось) пользовался. Я про багу с аппер я еще в клиппере знал. Там у меня была своя функция. Споткнулся - некогда было разбираться (проект горел), сделал затычку. Кидаешь текст процедуры в рабочую папку, драйвер ее сам компиляет при использовании в запросах. Грю же - тупой способ. Может кто лучше знает ?
> -=snoop=- © (03.08.05 14:34) [24]
- у тебя проблема с кодировкой. Имхо - лучше не юзать фоксовские таблицы вместе с делфи. А чем смотришь ? И переделай на параметр.
ANB (2005-08-03 14:35:00) [11]
> -=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 с параметрами так не работают.
-=snoop=- (2005-08-03 14:34:00) [12]написал вот такой код
('insert into login.pro (code) values ("ыыы")') ;
вставил мне в таб. всяких закарюк, посмотрел кадировку таб = 866, как победить? подскажите?
P.S.
2 ANB © честно говоря тут все не пышут добролюбием....
sniknik (2005-08-03 14:34:00) [13]ANB © (03.08.05 14:13) [21]
> Только функцию придется в фоксе писать. И таскать ее везде.
а как ты ее к ODBC/OLEDB-шному драйверу подключаеш? чтобы он ее использовал, т.е. коннекте к нему из дельфей эту функцию можно было в запросах использовать.
не в этом случае, конечно, но это можно использовать.
-=snoop=- (2005-08-03 14:25:00) [14]ANB ©, спасибо за AnsiUpperCase
evvcom © я не умею пользоваться параметрами ибо совсем недавно пишу на дельфях
ANB (2005-08-03 14:13:00) [15]
> evvcom © (03.08.05 14:09) [20]
- тогда я тупой, так как этим способом обычно и пользуюсь. Только функцию придется в фоксе писать. И таскать ее везде.
А чего ты седня злой такой ? На обед не ходил ?
evvcom (2005-08-03 14:09:00) [16]
> но тупой способ борьбы - написать свою
Достали меня уже подобными фразами. Тупыми способами пользуются тупые люди, если кто себя относит к ним, то пользуйтесь. А написать свою - это вовсе не тупой способ.
ANB (2005-08-03 14:05:00) [17]1. Не изгаляйся с кавычками, а юзай параметры
2. AnsiUpperCase - это для Делфи
3. В FoxPro - функция upper с русским буквами может не работать (во всяком случае - в досовском). Я не знаю движка, который это правит (может ща кто и подскажет), но тупой способ борьбы - написать свою.
evvcom (2005-08-03 14:05:00) [18]
> "%фффффф%" = это просто пример с русскими буквами, а так
> у меня стоит выч.переменная...
Используй параметр для этого, а не вычисл.переменную. Можно будет запрос создать в designtime и не заниматься ерундой с постоянным динамическим его формированием. Тогда и кавычки не потребутся, и прочее, прочее, прочее...
> с регистром вроде все Ок, но проверю...
where upper(code) like upper(:Code)
-=snoop=- (2005-08-03 14:00:00) [19]чегото вообСче гон...
вот кусок кода
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)) ;
отрабатывается только на английских фразах, а русские как были в таблице так и идут в том же регистре((((
может у меня каки-нить глобальные настройки не верные???
-=snoop=- (2005-08-03 13:17:00) [20]2Ольга только русские
2evvcom © "%фффффф%" = это просто пример с русскими буквами, а так у меня стоит выч.переменная...
с регистром вроде все Ок, но проверю...