55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
1

Невозможен перевод с NULL в OleStr

13.12.2015, 19:30. Показов 1453. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При нажатии на кнопку, должна удалиться(стереться) запись в выделенной ячейки. Т.е, я :='';
Но пишет выше написанную ошибку, если писать :=NUll то тоже самое, как этого избежать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2015, 19:30
Ответы с готовыми решениями:

Невозможно конвертировать Null в OleStr хотя всё вроде заполнено?
Ни с того ни с сего, функиця которая исправно работала 2 дня, вдруг начала шалить, от чего - не...

Не открывается проект, пишет 'Could not convert variant of type (Null) into type (OleStr)
Крч такое дело было, я добавил в главный юнит функцию отслеживания активности форма, но не мог...

XML Получение данных. Ошибка Could not convert variant of type (Null) into type (OleStr)
Здравствуйте! Пытаюсь загрузить из xml в мемо данные, но выдает ошибку, хотя данные в мемо...

Ошибка Unable to load project. Could not convert variant of type (Null) into type (OleStr)
вдруг не с того не с чего при запуске проекта вылетает ошибка Unable to load project. Could not...

15
5393 / 4321 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
13.12.2015, 19:32 2
Александр321321, код покажите
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
13.12.2015, 19:42  [ТС] 3
Немного не правильно описал ошибку. Если выполнять для одной таблицы, то всё нормально, но у меня вторая таблица зависит от первой, соответственно удаляться должны такие же ячейки. Если ячейка имеет данные, то удаляется всё отлично, но если же вдруг она пуста, то возникает данная ошибка.
Delphi
1
2
3
4
5
6
7
8
9
10
11
  for i := 4 to 6 do  //перебираю нужные мне столбцы во второй таблице
    begin
    if AnsiPos(form5.DBGrid1.Columns.Items[i].Title.Caption,Form1.DataSource1.DataSet.FieldByName(cap).Value)=1 then
    begin
         form5.DataSource1.DataSet.RecNo:=form1.DataSource1.DataSet.RecNo; //выделение строки во второй таблице
         capt :=  form5.DBGrid1.Columns.Items[i].Title.Caption; // столбец
   form5.DataSource1.DataSet.Edit;
        Form5.DataSource1.DataSet.FieldByName(capt).Value:='';  //изменение значения ячейки
        Form5.ADOQuery1.Post;
    end;
    end;
Добавлено через 3 минуты
Я попробывал закоментить ошибка из-за
Delphi
1
if AnsiPos(form5.DBGrid1.Columns.Items[i].Title.Caption,Form1.DataSource1.DataSet.FieldByName(cap).Value)=1 then
но как связано может быть с таблицей, я до сих пор не понял
0
5393 / 4321 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
13.12.2015, 19:47 4
Александр321321, а на какой строке вылетает?
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
13.12.2015, 19:50  [ТС] 5
Если я оставлю такой код, то уже вылетает, если же if уберу, а остальное оставлю, то вроде бы всё нормально(по крайне мере ошибку не выдаёт), но всегда есть шанс того, что я не всё предусмотрел, над этим и работаю
Delphi
1
2
3
4
5
6
7
for i := 4 to 6 do //перебираю нужные мне столбцы во второй таблице
begin
if AnsiPos(form5.DBGrid1.Columns.Items[i].Title.Caption,Form1.DataSource1.DataSet.FieldByName(cap).Value)=1 then
begin
 
end;
end;
0
5393 / 4321 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
13.12.2015, 19:53 6
Цитата Сообщение от Александр321321 Посмотреть сообщение
if AnsiPos(form5.DBGrid1.Columns.Items[i].Title.Caption,Form1.DataSource1.DataSet.FieldByName(cap).Value)=1 then
что делает эта строка?
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
13.12.2015, 20:07  [ТС] 7
Если есть совпадения в cfption столбца второй таблицы с данными в удаляемой ячейке первой таблицы, то выполняется код

Добавлено через 58 секунд
дело в том что без этой строчки программа удаляет что нужно, но у меня есть счётчик, именно поэтому мне надо сравнивать совпадения

Добавлено через 10 минут
https://www.cyberforum.ru/newr... &p=8483060 И в чём весь сок, что эта проверка действительно работает и если ячейка не пустая, то работает всё без ошибки, если пустая, то вылазит ошибка, конечно же можно попробовать поставить условие, но где гарантия того, что она не вылезит сново
0
5393 / 4321 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
13.12.2015, 20:08 8
Александр321321, почему AnsiPos?
вы проверяли заголовки? они все нормальные?
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
13.12.2015, 20:14  [ТС] 9
да, здесь проблем быть не может, так как вся база данных на этом держится

Добавлено через 3 минуты
Сейчас поставил условие
if form1.DataSource1.DataSet.FieldByName(cap).value<>NULL then
вроде бы работает
0
5393 / 4321 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
13.12.2015, 20:15 10
проверьте так

Delphi
1
2
3
4
var position:integer;
 
position:=AnsiPos(form5.DBGrid1.Columns.Items[i].Title.Caption,Form1.DataSource1.DataSet.FieldByName(cap).Value);
if position=1 thrn
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
13.12.2015, 20:29  [ТС] 11
Да работает. Ладно это было удаление ячейки с помощью условия я справился. Но с добавлением данных в ячейку точно такая же ошибка.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
    form3.ADOQuery2.Filtered:=false; //Фильтр
       form3.DataSource2.DataSet.First;   
       while not Form3.DataSource2.DataSet.Eof do  //Перебор строк
begin
  if  //при переборки строк, если есть совпадения должен сработать след код
AnsiPos(form3.DataSource2.DataSet.FieldByName('qwerty1').value,form1.DataSource1.DataSet.FieldByName(cap).Value)=1 then
   begin
   form3.DataSource2.DataSet.Edit;
    form3.DataSource2.DataSet.FieldByName('qwerty3').Value:= form3.DataSource2.DataSet.FieldByName('qwerty3').Value;
    form3.DataSource2.DataSet.post;
   end;
    Form3.DataSource2.DataSet.Next;
    end;
Тут вся суть такая, что если совпадения есть, то ничего не меняется(это данные кусок кода), если совпадения нет, то меняется очень много(если ячейка пустая, то записываются данные и счётчик уменьшается, если не пустая и не совпадает, то записываются данные, в новых данных счётчик -1 в старых +1 ).Всё это работает до тех пор пока не вылазит эта ошибка, никак не могу понять что это, в интернете нужной информации нет

Добавлено через 1 минуту
Ваш вариант тоже не помог

Добавлено через 17 секунд
Может быть есть другой способ проверки?

Добавлено через 1 минуту
Просто я заметил, что он ругается только на пустые ячейки, если при удалении мне удалось обойти это поставив условие, то тут как раз-таки наоборот мне приходится заполнять пустые ячейки
0
5393 / 4321 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
13.12.2015, 20:30 12
Цитата Сообщение от Александр321321 Посмотреть сообщение
Ваш вариант тоже не помог
он и не должен был помочь

Цитата Сообщение от Александр321321 Посмотреть сообщение
Может быть есть другой способ проверки?
конечно есть - в режиме отладки проверяйте что у вас там
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
13.12.2015, 20:33  [ТС] 13
Я в том смысле, чтобы заменить AnsiPos каким-то другим методом проверки. Просто по интернету ползаешь редко что-то находишь, обычно либо сам к этому приходишь, либо где-то что-то услышишь. В интернете кстати везде ansipos и pos используется
0
5393 / 4321 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
13.12.2015, 20:45 14
Александр321321, вы проверили что вам ваш поиск выдает?
0
55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463
13.12.2015, 20:48  [ТС] 15
Так в том то и дело, что 1 если найдено, 0 если не найдено, если как вы делали, то абсолютно тоже самое, если равно 1, то выполняется код, если нет, то не выполняется.
0
5393 / 4321 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
13.12.2015, 20:49 16
Александр321321, ну так проверяйте дальше, выводите все элементы и смотрите где затыкается
0
13.12.2015, 20:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2015, 20:49
Помогаю со студенческими работами здесь

Unable to load project [путь проекта] could not convert variant of type (null) into type (olestr)
Добрый день! при перезагрузке проекта столкнулся проблемой: проект не хочет открываться и выдает...

Ошибка: Could not convert variant of type (null) into type (olestr)
здравствуйте подскажите пожалуйста использую для ввода в базу sql cxgrid (по идеи у меня cxgrid...

Ошибка "Could convert variant of type (Null) into type (oleStr)"
Пишу программу для курсовой работы, программка на тему АРМ Администратора анти-кафе, выскакивает...

Ошибка: "Could not convert variant of type (Null) into type (OleStr)"
Здравствуйте, помогите с такой ошибкой: при выборе ячейки в DBGrid вылетает ошибка как во вложении....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru