Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Вниз

нулевой результат запроса   Найти похожие ветки 

 
mari   (2003-11-21 10:30) [0]

Извините за глупый вопрос

Query2.Close;
Query2.SQL.Clear;
query2.SQL.Add("select naim from pe where naim=:g");
query2.Params[0].AsString:=gr+" "+nam1+" "+tu;
Query2.Open;

Query2.RecordCount всегда 0, хотя такая строка в таблице точно есть


 
Reindeer Moss Eater   (2003-11-21 10:31) [1]

Может и есть, но не подходит к условию Where


 
mari   (2003-11-21 10:34) [2]

т.е.? почему не подходит?


 
Reindeer Moss Eater   (2003-11-21 10:36) [3]

Потому что рекордкаунт равен нулю.
Если бы подходила, не был бы равен нулю


 
Reindeer Moss Eater   (2003-11-21 10:38) [4]

Query2.RecordCount всегда 0, хотя такая строка в таблице точно есть

Какая "такая"?


 
Anatoly Podgoretsky   (2003-11-21 10:40) [5]

mari © (21.11.03 10:30)
Выведи в грид, видно или нет?
А RecordCount опасная штука, что бы на нее опираться.
И посмотри чему равен query2.Params[0] после присвоения, то ли что надо или нет.


 
mari   (2003-11-21 10:40) [6]

та что равна gr+" "+nam1+" "+tu


 
Плохиш_   (2003-11-21 10:41) [7]

>mari © (21.11.03 10:40) [6]

QuotedStr тебе поможет


 
mari   (2003-11-21 10:45) [8]

> Anatoly Podgoretsky © (21.11.03 10:40) [5]

проверила, в гриде ничего нет, а параметр правильный


 
Reindeer Moss Eater   (2003-11-21 10:46) [9]

Нет такой записи в таблице.


 
Johnmen   (2003-11-21 10:50) [10]

>та что равна gr+" "+nam1+" "+tu

Мы ея не видим, почему-то...:)


 
mari   (2003-11-21 10:52) [11]

пробовала Like вместо =, результат тот же :((


 
Reindeer Moss Eater   (2003-11-21 10:53) [12]

Скопируй содержимое поля naim в редактор фара.
Скопируй туда же значение gr+" "+nam1+" "+tu

Сравни


 
aVast   (2003-11-21 10:59) [13]

to mari
посмею предложить такие варианты:

Query2.Close;
Query2.SQL.Clear;
query2.SQL.Add("select naim from pe where naim="""+gr+" "+nam1+" "+tu+"""");
Query2.Open;


или


Query2.Close;
Query2.SQL.Clear;
query2.SQL.Add("select naim from pe where naim=:g");
query2.Params[0].ParamType:=ptInput;
query2.Params[0].DataType:=ftString;
query2.Params[0].AsString:=gr+" "+nam1+" "+tu;
Query2.Open;


 
Reindeer Moss Eater   (2003-11-21 11:01) [14]

Глупости какие.
Нет у нее такой строки в таблице. И все дела.


 
mari   (2003-11-21 11:07) [15]


> aVast © (21.11.03 10:59) [13]

не помогло, я в растерянности :((


 
mari   (2003-11-21 11:09) [16]


> Reindeer Moss Eater © (21.11.03 11:01) [14]

есть, в конечной таблице получается несколько одинаковых записей


 
Danilka   (2003-11-21 11:10) [17]

[15] mari © (21.11.03 11:07)
а ты сделала вот-так:
[12] Reindeer Moss Eater © (21.11.03 10:53)

вместо ФАРа можешь использовать блокнот, и даже ворд :))
чудес на свете не бывает.


 
Danilka   (2003-11-21 11:12) [18]

может быть что угодно, начиная от разного регистра, лишнего пробела и заканчивая буквами разного алфавита с по русски и с по-латински.


 
Alex_Bredin   (2003-11-21 11:12) [19]

может это поможет?

Query2.Close;
Query2.SQL.Clear;
query2.SQL.Add("select naim from pe where naim=:g");
query2.prepare;
query2.Params[0].AsString:=gr+" "+nam1+" "+tu;
Query2.Open;


 
mari   (2003-11-21 11:13) [20]


> Danilka © (21.11.03 11:10) [17]

блокнот предлагает сохранить эту строку в формате юникода, после сравнения файлов результат - идентичны


 
Reindeer Moss Eater   (2003-11-21 11:15) [21]

Я же сказал в редакторе ФАРА
И нажать просмотр HEX кодов.

Нету в таблице такой записи. Нету!
Хоть препаре хоть запрепаре. Хоть параметры, хоть QuotedStr.


 
Danilka   (2003-11-21 11:15) [22]

[19] Alex_Bredin © (21.11.03 11:12)
не поможет. :))

[20] mari © (21.11.03 11:13)
зачем юникод?
ты можешь написать сюда содержимое gr и tu, а так-же содержимое "правильного" поля naim?


 
mari   (2003-11-21 11:18) [23]

выкладываю код, правда, кривой он у меня, так что не очень изевайтесь :(
{переписываем подгруппы в заголовок}
table3.First;
gr:=table3.fieldbyname("pgr").AsString;
while not table3.eof do begin
t2m:=1;
if gr<>"" then begin
Query1.Close;
Query1.SQL.Clear;
query1.SQL.Add("select * from priem where pgr=:g order by poz,poz1");
query1.Params[0].AsString:=gr;
Query1.ExecSQL;
query1.active:=true;
if query1.RecordCount>1 then begin
{ t2m:=query1.RecordCount;}
{проверка на наличие этой записи, если нет, то пишем в таблицу}
typ:=table3.fieldbyname("typ").AsString;
tu:=table3.fieldbyname("tu").AsString;
if (table3.fieldbyname("poz").AsString[1]="C") or (table3.fieldbyname("poz").AsString[1]="R")
then nam1:=table3.fieldbyname("naim").AsString else nam1:="";
table2.Active:=true;
Query2.Close;
Query2.SQL.Clear;
query2.SQL.Add("select naim from pe where naim=:g");
query2.Params[0].AsString:=gr+" "+nam1+" "+tu;
Query2.Open;
if Query2.RecordCount<1 then begin
table2.Insert;
table2.FieldByName("naim").Value:=gr+" "+nam1+" "+tu;
table2.FieldByName("prim").Value:=table3.fieldbyname("prim").AsString;
table3.edit;
table3.fieldbyname("prim").Value:="";
table3.Post;
table2.Post;
end;
end;
end;
table3.Next;
gr:=table3.fieldbyname("pgr").AsString
end;
table2.Insert;
table2.Post;


 
Alex_Bredin   (2003-11-21 11:19) [24]

ExecSQL?????????


 
sniknik   (2003-11-21 11:24) [25]

сделай такой запрос без параметров
select naim from pe where naim="строковое значение"
вмето - строковое значение скопируй(руками через клипборд) значение поля из таблицы.
если останется по прежнему и в значении есть русские буквы то настраивай правильно лангдрайвер (BDE администратор).


 
mari   (2003-11-21 11:24) [26]


> Alex_Bredin © (21.11.03 11:19) [24]


Query2.ExecSQL;
Query2.Activ:=True;

не помогает


 
Alex_Bredin   (2003-11-21 11:25) [27]

да я к тому что ExecSQL там не нужен


 
Anatoly Podgoretsky   (2003-11-21 11:26) [28]

Query1.ExecSQL применяется только к запросам которые не возвращают записей, а SELECT возвращает


 
Danilka   (2003-11-21 11:26) [29]

из приведенного коде непонятно содержимое gr, nam1, tu и naim.
пожалуйста, поставь на строке: " Query2.Open;" точку останова, когда она сработает посмотри значение этих переменных и напиши сюда:
gr = "..."
nam1 = "..."
tu = "..."
затем, из базы скопируй содержимое поля naim и напиши сюда еще одну строчку:
naim = "..."

вместо троеточия - реальные значения, разумеется.
вероятно, ты на пол-пути сама обнаружишь ошибку. :))


 
mari   (2003-11-21 11:35) [30]


> sniknik © (21.11.03 11:24) [25]

ручками получилось


> Danilka © (21.11.03 11:26) [29]

у меня инет и программа на разных компах, так что копировать проблематично :))


 
Reindeer Moss Eater   (2003-11-21 11:37) [31]

Итак итог:
"Такая" строка не попадает по сформированное программой условие WHERE


 
Danilka   (2003-11-21 11:38) [32]

[30] mari © (21.11.03 11:35)
тогда остается только воспользоваться плакатом для снятия стресса:
http://img.lj.com.ua/dashing/stres.jpg

я-же написал методику, по которой ты сама найдешь ошибку. не хочешь - не ищи. :))


 
mari   (2003-11-21 11:45) [33]


> Danilka © (21.11.03 11:38) [32]

я запрос переписала как where naim like :g
Query2.Params[0].AsString:=gr;


> Reindeer Moss Eater © (21.11.03 11:37) [31]

почему такое может быть, подскажите чайнику


 
Reindeer Moss Eater   (2003-11-21 11:48) [34]

> Reindeer Moss Eater © (21.11.03 11:37) [31]

почему такое может быть, подскажите чайнику


Потому что содержимое поля naim в "Такой" записи отличается от строки заданной в критерии WHERE


 
Danilka   (2003-11-21 11:57) [35]

[33] mari © (21.11.03 11:45)
такой запрос точно ничего не вернет.
а вот Query2.Params[0].AsString:=gr+"%";
может-быть. но это не поможет.

ну пожалуйста, сделай так как я написал в [29], можешь даже не писать сюда, скопируй просто в блокнот и посмотри, а то я сам плакатом воспользуюсь. :))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.127 c
1-36687
_юзер_
2003-12-02 17:58
2003.12.12
MDI


3-36502
Элина
2003-11-22 17:59
2003.12.12
Как в SQL проверить поле на нулевое значение


1-36591
maya
2003-12-03 12:57
2003.12.12
Приложение в браузере


1-36612
qwerty2
2003-12-01 14:05
2003.12.12
Указатели


1-36670
A JI E LLI A
2003-11-30 13:22
2003.12.12
Переменные





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский