Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

нулевой результат запроса [D7, Paradox]


Страницы:   1 2

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]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо