Форум: "Базы";
Текущий архив: 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.007 c