Could not convert variant of type error into type string

Ошибка Could not convert variant of type (Null) into type (String) Delphi БД Решение и ответ на вопрос 256545

stasz13

0 / 0 / 0

Регистрация: 10.03.2011

Сообщений: 21

1

13.03.2011, 17:25. Показов 28336. Ответов 8

Метки нет (Все метки)


У меня вопрос по моему проекту…!)
Если кто знает помогите, в свойствах компонента DBGrid —> OnDrowColumnCell —> пишу код

Delphi
1
2
3
4
5
6
7
8
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
Image1.Picture.LoadFromFile(ADOTable1['фотография']);
Image1.Stretch:=true;
end;
 
end.

У меня две формы, выдат ошибку когда я пытаюсь на первой форме нажать Button
ошибка в неправильности ТИПОВ данных, я не знаю где ставится перевод может кто-нибудь подсказать, ну если я правильно понял конечно о типе…
ВОТ ошибка
‘Could not convert variant of type (Null) into type (String)’. Process stoped. Use step of Run of to continue.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



2832 / 1641 / 254

Регистрация: 03.12.2007

Сообщений: 4,222

13.03.2011, 17:59

2

Цитата
Сообщение от stasz13
Посмотреть сообщение

‘Could not convert variant of type (Null) into type (String)’

В LoadFromFile нужен string. А ему в ADOTable1[‘фотография’] передаётся Null. Значит ошибка в другом месте — почему это равно Null?



0



0 / 0 / 0

Регистрация: 10.03.2011

Сообщений: 21

13.03.2011, 23:27

 [ТС]

3

Цитата
Сообщение от Somebody
Посмотреть сообщение

В LoadFromFile нужен string. А ему в ADOTable1[‘фотография’] передаётся Null. Значит ошибка в другом месте — почему это равно Null?

И что нужно сделать, Я ведь и спрашивая, где указать тип ?????



0



SAMZ

1263 / 706 / 62

Регистрация: 21.12.2009

Сообщений: 2,255

14.03.2011, 08:58

4

Лучший ответ Сообщение было отмечено Joey как решение

Решение

Delphi
1
2
if not (ADOTable1['фотография'].IsNull) then
  Image1.Picture.LoadFromFile(ADOTable1['фотография']);

Если «фотография» — это имя поля, то я бы предложил немного по другому

Delphi
1
2
if not (ADOTable1.FieldByName('фотография').IsNull) then
  Image1.Picture.LoadFromFile(ADOTable1.FieldByName('фотография').AsString);



1



stasz13

0 / 0 / 0

Регистрация: 10.03.2011

Сообщений: 21

14.03.2011, 09:20

 [ТС]

5

Цитата
Сообщение от SAMZ
Посмотреть сообщение

Delphi
1
2
if not (ADOTable1['фотография'].IsNull) then
  Image1.Picture.LoadFromFile(ADOTable1['фотография']);

Если «фотография» — это имя поля, то я бы предложил немного по другому

Delphi
1
2
if not (ADOTable1.FieldByName('фотография').IsNull) then
  Image1.Picture.LoadFromFile(ADOTable1.FieldByName('фотография').AsString);

СПАСИБО второй Вариант помог , а FilbByName -это команда что значит?



0



SAMZ

1263 / 706 / 62

Регистрация: 21.12.2009

Сообщений: 2,255

14.03.2011, 11:14

6

stasz13,

а FilbByName -это команда что значит?

Только не

Delphi
1
FilbByName

а

Delphi
1
FielbByName

Это значит, что Вы обращаетесь к полю с именем, указанным в качестве аргумента функции FielbByName для текущей записи набора ADOTable1
Вам бы все-же с матчастью поработать надо.



0



72 / 64 / 3

Регистрация: 13.05.2010

Сообщений: 349

14.03.2011, 17:25

7

FieldByName



0



smus

1 / 1 / 0

Регистрация: 06.02.2015

Сообщений: 7

14.09.2017, 16:26

8

Как я понял, один из вариантов решения это вставка этой строки:

Delphi
1
NullStrictConvert := false;

Только не понятно, куда вставлять. У меня связь с базой SQL Server, в ней поля типа VarChar. Ошибка выводится только при компиляции, программа отдельно работает нормально.
Код присвоения данных такой (это добавление ряда в таблицу):

Delphi
1
2
3
4
5
6
7
8
9
 
        ADOTable1.Last;
        ADOTable1.Insert;
        ADOTable1.Edit;
        ADOTable1.FieldByName('fname').AsString:=fname.Text;
        ADOTable1.FieldByName('lname').AsString:=lname.Text;
        ADOTable1.FieldByName('email').AsString:=email.Text;
        ADOTable1.FieldByName('role').AsString:=role.Text;
        ADOTable1.Post;

Объясните, как убрать эти сообщения об ошибках



1



Модератор

8254 / 5477 / 2248

Регистрация: 21.01.2014

Сообщений: 23,578

Записей в блоге: 3

15.09.2017, 06:24

9

Цитата
Сообщение от smus
Посмотреть сообщение

Объясните, как убрать эти сообщения об ошибках

какие эти? Кто их видит, кроме Вас?
И зачем влезли в чужую тему шестилетней давности, вместо того, чтобы создать свою?
И на кой вообще ляд работать с базой напрямую? Есть такая штука, как запросы, тем более при работе с MS SQL Server…



0




Форум программистов Vingrad

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> Ошибка преобразования типов EVariantTypeCastError  

:(

   

Опции темы

Vorona
Дата 23.10.2004, 19:27 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 155
Регистрация: 12.10.2004
Где: Украина, Днепропе тровск

Репутация: нет
Всего: 2

 Мне не везет с запуском программы..

На этот раз выдает ошибку такого содержания:

project … raised exception class EVariantTypeCastError with message ‘Could not convert variant of type (null) into type (string)’. process stopped. use step or run to continue.

Почему может возникать такая ошибка? 
Я думала, что это из-за того, что мой запрос срабатывает на изменение текста Edit-а, и когда я пишу, а потом вытираю все, при пустой строке глючит, дак нет!!

Еще и ошибка выводится в самом начале запуска проги…. 

Это сообщение отредактировал(а) Alexeis — 27.4.2007, 10:56

PM MAIL WWW   Вверх
Pakshin A. S.
Дата 23.10.2004, 19:32 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
****

Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61

может через F8 определить поточнее место вылета ошибки… :(

PM   Вверх
ДЫМ
Дата 24.10.2004, 01:22 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: нет
Всего: 8

А как именно ты «вытираешь все»? Посмотри, внимательно что ты присваиваешь переменной типа string. А лучше покажи код.

PM MAIL WWW   Вверх
Pakshin A. S.
Дата 24.10.2004, 09:57 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
****

Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61

Как мне понимается ошибка лезет из-за работы с variant’ами… Трассировкой можно всё найти…

PM   Вверх
Полудненко Олег
Дата 24.10.2004, 10:51 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Українець
**

Профиль
Группа: Участник…
Сообщений: 556
Регистрация: 13.8.2003

Репутация: нет
Всего: -11

Pakshin A. S. тогда, по-моему, уже лучше через F7

PM MAIL   Вверх
Vorona
Дата 24.10.2004, 11:22 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 155
Регистрация: 12.10.2004
Где: Украина, Днепропе тровск

Репутация: нет
Всего: 2

Все ошибки уже поправлены!! Спасибо за беспокойство :D
Я удалила все свои объекты по работе с базой и поставила по новой
Видимо там где-то была ошибка
:)

PM MAIL WWW   Вверх
Pakshin A. S.
Дата 24.10.2004, 12:39 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
****

Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61

Цитата
Pakshin A. S. тогда, по-моему, уже лучше через F7

Попробуй… мне лично не интересен код содния формы, к примеру, или выхов из памяти чего-либо… :)

PM   Вверх
Saya
Дата 27.4.2007, 10:37 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.4.2007

Репутация: нет
Всего: нет

Цитата(Vorona @ 24.10.2004,  11:22)
Все ошибки уже поправлены!! Спасибо за беспокойство smile 
Я удалила все свои объекты по работе с базой и поставила по новой
Видимо там где-то была ошибка
 smile

можно подробнее объяснить,как вы справились с ошибкой?
у меня подобная проблема

Программа до этого момента работала около года нормально.
Тут начала выдавать ошибку: Could not convert of type(Null) >into type(Integer)
Программа написанна на Delphi, код не менялся, да и исходников нет, только ехе-шник
Программа, насколько мне удалось выяснить, введенные данные полей передает модулю, написанный на Java. 
Что нужно проверить, что посмотреть?

PM MAIL   Вверх
Akella
Дата 3.5.2007, 14:04 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Творец
****

Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329

Цитата(Vorona @  23.10.2004,  19:27 Найти цитируемый пост)
Could not convert variant of type (null) into type (string)

Перевёл бы….

Дело в том что ты пытаешься присвоить строковой переменной пустое значение (null).

PM MAIL   Вверх
uaWebDeveloperYandex
Дата 3.9.2011, 23:22 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.9.2011

Репутация: нет
Всего: нет

у меня это ошибка вылетает когда активирую компонент ADOTable (DM.HotelTab.Active   := True;)
кто знает как решить эту проблему?

PM MAIL   Вверх
Данкинг
Дата 3.9.2011, 23:35 (ссылка)
|    (голосов:1)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Yersinia pestis
****

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130

Цитата(uaWebDeveloperYandex @  4.9.2011,  00:22 Найти цитируемый пост)
кто знает как решить эту проблему? 

Никто, пока не поведаешь о проблеме более подробно.

———————

There’s nothing left but silent epitaphs.

PM MAIL WWW   Вверх
uaWebDeveloperYandex
Дата 4.9.2011, 00:09 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.9.2011

Репутация: нет
Всего: нет

к БД подключаюсь через компонент ADOConnection, а к нему ADOTable. Программа при запуске  ругается на свойство action компонента ADOTable, т.е. если ADOTable.active:=false все работает, а если ADOTable.active:=true  выдает ошибку

Это сообщение отредактировал(а) uaWebDeveloperYandex — 4.9.2011, 03:20

PM MAIL   Вверх
Данкинг
Дата 4.9.2011, 01:36 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Yersinia pestis
****

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130

Ошибка преобразования данных может возникать только при обработке этих данных. Видимо, при запуске программы в коде прописано что-то ещё кроме просто «ADOTable.active:=true» ?

———————

There’s nothing left but silent epitaphs.

PM MAIL WWW   Вверх
uaWebDeveloperYandex
Дата 4.9.2011, 13:33 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.9.2011

Репутация: нет
Всего: нет

Ошибка была исправлена!
Проблема была в компоненте ADOConnection(свойство ConnectionString).  
ADOConnection->ConnectionString->Build->Поставщик данных->Provider=Microsoft.Jet.OLEDB.4.0;, а до этого поставщиком был  Provider=MSDASQL.1;

PM MAIL   Вверх
Rodman
Дата 4.9.2011, 18:28 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

CIO
****

Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122

M Модератор: Пожалуйста, один топик — один вопрос.

———————

CRM с функцией АвтоОбзвона

Лотереи мира

PM MAIL WWW Skype GTalk YIM MSN   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
Правила форума «Delphi: Базы данных и репортинг»
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »

Помогите!
Есть форма, на ней ADOTable она подключена к базе Access, но при компиляции выскакивает ошибка

First chance exception at $7C81EB33. Exception class EVariantTypeCastError with message ‘Could not convert variant of type (Null) into type (String)’. Process Project1.exe (3912)

и указывает на строку в файле Forms.hpp

/* TCustomForm.Create */ inline __fastcall virtual TForm(Classes::TComponent* AOwner) : TCustomForm(AOwner) { }

хотя при простом запуске проги она не выскакивает и когда Table была тоже не выскакивала но Table медлено работает поэтому оставить немогу, хочу разобратся что за ошибка и как устранить, при чем выскакивает когда в ADOTable Enable = true.

8 ответов

547

26 июня 2006 года

Hydra

488 / / 20.06.2006

попробуй сменить ппорядок подключения хедеров — иногда в подобных случаях помогает.

1

26 июня 2006 года

kot_

7.3K / / 20.01.2000

Используй поиск по форуму.
У тебя в коде происходит считывание данных (явно или не явно) без проверки на NULL. Возможно это какой либо из компонентов типа TDBEdit в котором допущена эта ошибка — может быть ты сам что либо читаешь типа:

Код:

//Здесь обязательно должно быть:
if(!ADOTable1->FieldByName(«somefiels»)->IsNull)
… ADOTable1->FieldByName(«somefiels»)->AsString;

З.Ы. Разницы принципиальной межу просто TTable и TADOTable практически нет лучше использовать TADOQuery

1

26 июня 2006 года

kot_

7.3K / / 20.01.2000

И ставь ADOTable1-Active = false перед компиляцией

10K

26 июня 2006 года

nut

13 / / 03.11.2005

у меня на форме 2 DBEdit, 2 Memo, DBRichViewEdit, DBNavigator, ADOTable и DataSource,
все навигация и работа через DBNavigator как применить твой код к данной ситуации и чем лучше TADOQuery и как с ним работать

1

27 июня 2006 года

kot_

7.3K / / 20.01.2000

TADOQuery лучше тем, что в твоем случае позволяет более гибко подойти к формированию набора данных. Но это рекомендация, а не обязательное требование. Более подробно — RTFM.
Первое, что необходимо сделать — проверь, что генерирует исключение — я предполагаю что возможно это DBRichViewEdit (по крайней мере со стандартными компонентами вроде бы я подобных ошибок не помню — впрочем я c ними нечасто работаю). Если это действительно так — то используй компонент из стандартного набора — или же загружай данные самостоятельно.
Если же проблема с DBEdit то используя TADOQuery ты легко сможешь решить данную проблему при помощи конструкции iif

10K

27 июня 2006 года

nut

13 / / 03.11.2005

нет, проблема именно в ADOTable, щас выкинул все компоненты оставил его одного и всеравно при активации хоть как выскакивает ошибка, ADOQuery настроить несмог пишет что ошибка с SQL связанная

1

28 июня 2006 года

kot_

7.3K / / 20.01.2000

[QUOTE=nut]ADOQuery настроить несмог пишет что ошибка с SQL связанная[/QUOTE]
ну так исправь ошибку и работай.

10K

28 июня 2006 года

nut

13 / / 03.11.2005

оказалось надо было просто кликнуть правой клавишей и добавить в ADOTable все поля

На чтение 3 мин. Просмотров 23 Опубликовано 15.12.2019

При фильтрации появляется Ошибка
«Project Project1.exe raised exception class EVariantTypeCastError with message ‘Could not convert variant of type (Null) into type (String)’. Process stopped. Use Step or Run to continue.»

procedure TfDM.SharedFilterRecord(DataSet: TDataSet; var Accept: Boolean);

c:=Copy(DataSet[‘Ôàìèëèÿ’], 1, Length(edt1)); Лучший ответ

Do you know why the block of code bellow will negate the «Could not convert variant of type (Null) into type (OleStr)» on some computers, not all of them but 3 out of ten computers generate the error message.

The function is then executed at FormCreate:

Thank you so much for your help.

4 Answers 4

You code fails when the value of a WMI property returns null. You can fix this, checking if the property has a null value before to cast or convert to an string. For this task you can use the VarIsNull function or just use the VarToStr method to safely convert variants to strings like so.

To avoid the error message do

NullStrictConvert := false; // avoid NULL OLE conversion error

Sometimes, the FWbemObject is not NULL but an exception is raise : «Can’nt convert an Array of Variant in OleStr «

As exemple : the BiosVersion (is an array) To solve it, try this :

How can I handle this type of error, Could not convert variant of type (string) to type (double)?
Are there other method that can be used to access data? Earlier version had a strings[] method
LineItems.Add(‘User Count: ‘+ Values[ARowInfo.RecordIndex, tvProductsNumberOfUsers.Index]);

Hi Ron!
The information provided is not enough to diagnose your problem for certain, sorry. Please specify the Grid and Delphi IDE versions you are using. Please also describe your task in detail or attach a small sample project which demonstrates your problem. For now, I assume that you try to convert the value obtained via the DataController.Values method into a string. If so, the problem is that DataController.Values returns variant type. Try to correct your code as follows:
.
LineItems.Add(‘User Count: ‘+ VarToStr(Values[ARowInfo.RecordIndex, tvProductsNumberOfUsers.Index]));
I hope this will help you.
Thanks,
Nicolas.

Your solution worked fine. But I asked another question also. Is there other methods to access the data associated with a grid cell other than values there use to be a strings property.

AZCOMP Support Video: Print Claims Error – Medisoft Version 19

medisoft tips and tricksSometimes after the initial installation of Medisoft, you might get an error that says “Could not convert variant of type (Null) into type (String)”.  This error most often occurs when you are printing paper or electronic claims.  The thing that is most likely happening here is that you don’t have a facility entered into the system.  You need to always have at least one facility in order to send out or print your claims.

If you like this video or if you thought it was helpful, be sure to click the “like” or “thumbs up” button in YouTube.  If you want to see more videos like this you can subscribe to our channel to get the new videos when they come out.  Leave us a comment or ask us a question below in the comments section if you need help with anything else.

Did you know that when you are watching these videos you can make the video the same size as your entire screen?  If you want to watch this video using your whole screen, then click where the red arrow is pointing to in the little picture just below this sentence while watching the video.

youtube_expand_screen_button

Or in other words, click the button in the lower right hand corner of the YouTube viewing screen while watching the video.  By clicking on that icon the video will be larger.

Well what are you waiting for?  Go ahead and watch the video already…

 

Версия драйвера 1.4.192
Появляется следующая ошибка:
Чек не может быть напечатан на фискальном регистраторе
Could not convert variant of type (Dispatch) into type (Ole Str)

Подключаю фискальный регистратор через обработку обслуживания 1С:Совместимо (драйвер Штрих-М) — подобных ошибок не возникает. Единственное в АРМК при подключении через данный драйвер невозможно напечатать копию чека.

 

Добрый день.

Сообщите номер релиза решения

 

Здравствуйте Надежда
Розница 8. Аптека, редакция 2.1 (2.1.2.8)

Драйвер устанавливался из конфигурации!!!

Версию драйвера от Штрих-М, на которой работает — 4.10 (точный релиз смогу написать только завтра), на версии 4.9 драйвера от Штрих-М появлялась подобная ошибка, описанная в первом сообщении. Возможно драйвер по технологии Рарус использует как раз версию 4,9

 

Хотя нет, извиняюсь.
Драйвер по технологии Рарус использует  драйвер ФР Штрих-М версии 4.10.288.

Изменено: Владимир Пшеничников17.06.2014 16:10:39

 

Владимир, я не поняла, на версии 4.10 есть ошибка?

 

Владимир Пшеничников

Заглянувший

Сообщений: 55
Авторитет:

0

Регистрация: 16.08.2013

#6



0


17.06.2014 17:20:43

Цитата
Надежда Бушева пишет:
Владимир, я не поняла, на версии 4.10 есть ошибка?

Нет. Данная ошибка возникает при использовании вашего пакета драйверов по технологии Рарус.
Те драйвера, что шли в комплекте с фр работают.

Но хотелось бы подключить через драйвера по технологии Рарус.
Проверьте пожалуйста работу с Штрих-М-ФР-К.
Я пробовал на двух кассах. Ситуация аналогична и на второй кассе

 

Добрый день.

При установке пакета драйверов по технологии Рарус из релиза 2.1.2.8 устанавливается драйвер Штрих версии 4.10. Возможно, у вас уже стояли драйвера Штрих версии 4.9

В любом случае, для работы необходимо поставить и пакет драйверов по технологии Рарус и драйвер Штрих версии 4.10.

 

Владимир Пшеничников

Заглянувший

Сообщений: 55
Авторитет:

0

Регистрация: 16.08.2013

#8



0


18.06.2014 13:27:31

Как раз стоит драйвер версии 4.10. Через 1С:Совместимо работает. Завтра на одной из касс попытаюсь подключить через ваши драйвера

Понравилась статья? Поделить с друзьями:
  • Could not connect to server socket error 10060 не получается соединиться
  • Could not handshake error in the pull function
  • Could not configure port 5 input output error
  • Could not get response error socket hang up
  • Could not complete your request because of a program error фотошоп при открытии файла