Проблема
Очевидно, это поле возвращает null
, указывая, в общем, что оно пустое.
Вариант со значением null
не может быть назначенСтрока, как это.Небольшой код, который воспроизводит проблему без каких-либо запросов, будет выглядеть так:
var
s: String;
v: Variant;
begin
v := null;
s := v;
ShowMessage(s);
Обратите внимание, что некоторые базы данных (в частности, Oracle) не различают пустые строки и нуль, поэтому, если вы вставитепустая строка, вы получите ноль обратно, потому что для них это то же самое.
И довольно странно, что GameName
пусто, так как вы использовали его в предложении where
.Вероятно, это связано с тем, что игра не найдена и ваш запрос не вернул ни одной строки.Проверьте qry1.IsEmpty
, чтобы проверить, действительно ли вы получили результат перед выполнением остальной части кода.Возможно, это уже решило бы вашу проблему ...
Решения
Итак, если вы проверили, действительно ли запрос вернул строку, но некоторые поля на самом деле равны нулю, и выЧтобы справиться с этим, есть два взаимозаменяемых способа сделать это:
Использовать метод AsString
для этого поля.Для этого вам нужно использовать метод FieldByName для получения объекта поля, а не его вариантное значение:
sGameName := qry1.FieldByName('GameName').AsString;
или использовать функцию VarToStr
.Эффект тот же, и я думаю, что это более или менее то, что AsString делает в любом случае.Какой из них использовать, это вопрос личных предпочтений.
sGameName := VarToStr(qry1['GameName']);