![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
нулевой результат запроса [D7, Paradox]
mari © (2003-11-21 10:30:00)
Извините за глупый вопрос
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, хотя такая строка в таблице точно есть
Danilka (2003-11-21 11:57:00) [1]
[33] mari © (21.11.03 11:45)
такой запрос точно ничего не вернет.
а вот Query2.Params[0].AsString:=gr+"%";
может-быть. но это не поможет.
ну пожалуйста, сделай так как я написал в [29], можешь даже не писать сюда, скопируй просто в блокнот и посмотри, а то я сам плакатом воспользуюсь. :))
Reindeer Moss Eater (2003-11-21 11:48:00) [2]
> Reindeer Moss Eater © (21.11.03 11:37) [31]
почему такое может быть, подскажите чайнику
Потому что содержимое поля naim в "Такой" записи отличается от строки заданной в критерии WHERE
mari (2003-11-21 11:45:00) [3]
> 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]
почему такое может быть, подскажите чайнику
Danilka (2003-11-21 11:38:00) [4]
[30] mari © (21.11.03 11:35)
тогда остается только воспользоваться плакатом для снятия стресса:
http://img.lj.com.ua/dashing/stres.jpg
я-же написал методику, по которой ты сама найдешь ошибку. не хочешь - не ищи. :))
Reindeer Moss Eater (2003-11-21 11:37:00) [5]
Итак итог:
"Такая" строка не попадает по сформированное программой условие WHERE
mari (2003-11-21 11:35:00) [6]
> sniknik © (21.11.03 11:24) [25]
ручками получилось
> Danilka © (21.11.03 11:26) [29]
у меня инет и программа на разных компах, так что копировать проблематично :))
Danilka (2003-11-21 11:26:00) [7]
из приведенного коде непонятно содержимое gr, nam1, tu и naim.
пожалуйста, поставь на строке: " Query2.Open;" точку останова, когда она сработает посмотри значение этих переменных и напиши сюда:
gr = "..."
nam1 = "..."
tu = "..."
затем, из базы скопируй содержимое поля naim и напиши сюда еще одну строчку:
naim = "..."
вместо троеточия - реальные значения, разумеется.
вероятно, ты на пол-пути сама обнаружишь ошибку. :))
Anatoly Podgoretsky (2003-11-21 11:26:00) [8]
Query1.ExecSQL применяется только к запросам которые не возвращают записей, а SELECT возвращает
Alex_Bredin (2003-11-21 11:25:00) [9]
да я к тому что ExecSQL там не нужен
mari (2003-11-21 11:24:00) [10]
> Alex_Bredin © (21.11.03 11:19) [24]
Query2.ExecSQL;
Query2.Activ:=True;
не помогает
sniknik (2003-11-21 11:24:00) [11]
сделай такой запрос без параметров
select naim from pe where naim="строковое значение"
вмето - строковое значение скопируй(руками через клипборд) значение поля из таблицы.
если останется по прежнему и в значении есть русские буквы то настраивай правильно лангдрайвер (BDE администратор).
Alex_Bredin (2003-11-21 11:19:00) [12]
ExecSQL?????????
mari (2003-11-21 11:18:00) [13]
выкладываю код, правда, кривой он у меня, так что не очень изевайтесь :(
{переписываем подгруппы в заголовок}
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;
Danilka (2003-11-21 11:15:00) [14]
[19] Alex_Bredin © (21.11.03 11:12)
не поможет. :))
[20] mari © (21.11.03 11:13)
зачем юникод?
ты можешь написать сюда содержимое gr и tu, а так-же содержимое "правильного" поля naim?
Reindeer Moss Eater (2003-11-21 11:15:00) [15]
Я же сказал в редакторе ФАРА
И нажать просмотр HEX кодов.
Нету в таблице такой записи. Нету!
Хоть препаре хоть запрепаре. Хоть параметры, хоть QuotedStr.
mari (2003-11-21 11:13:00) [16]
> Danilka © (21.11.03 11:10) [17]
блокнот предлагает сохранить эту строку в формате юникода, после сравнения файлов результат - идентичны
Danilka (2003-11-21 11:12:00) [17]
может быть что угодно, начиная от разного регистра, лишнего пробела и заканчивая буквами разного алфавита с по русски и с по-латински.
Alex_Bredin (2003-11-21 11:12:00) [18]
может это поможет?
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;
Danilka (2003-11-21 11:10:00) [19]
[15] mari © (21.11.03 11:07)
а ты сделала вот-так:
[12] Reindeer Moss Eater © (21.11.03 10:53)
вместо ФАРа можешь использовать блокнот, и даже ворд :))
чудес на свете не бывает.
mari (2003-11-21 11:09:00) [20]
> Reindeer Moss Eater © (21.11.03 11:01) [14]
есть, в конечной таблице получается несколько одинаковых записей