Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Вставка переменных в dbf


Автор: Berliner 19.8.2006, 10:57
Здраствуйте хочу вставить занчения переменных в dbf вываливается ошибка  invalid variant type conversion

Код

                 ADOTable1.Active:=true;
                   //invalid variant type conversion
                  ADOTable1.Insert;
                  ADOTable1.Fields[0].AsString:=d1;
                  ADOTable1.Fields[1].AsString:=d2;
                  ADOTable1.Post;



Посдкажите в чем проблемма в роде и структура совпадает d1 -Sting поле в dbf Charecter

Автор: Akella 19.8.2006, 11:12
попробуй
ADOTable1.Fields[0].AsVariant := d1;

Автор: Berliner 27.8.2006, 14:03
неидет такая же самая ошибка 

Автор: Fedia 27.8.2006, 23:48
Цитата(Berliner @  19.8.2006,  10:57 Найти цитируемый пост)
Посдкажите в чем проблемма в роде и структура совпадает d1 -Sting поле в dbf Charecter

Если возникает ошибка 
Цитата(Berliner @  19.8.2006,  10:57 Найти цитируемый пост)
invalid variant type conversion

то налицо несовпадение типов поля и переменной.
Перечень полей в компоненте ADOTable1 задан явно ?. Это можно проверить двойным кликом по компоненту ADOTable1. Если да, то не изменен ли там порядок следования полей по сравнению с тем, который был задан при создании таблицы ? Это я к тому, что возможно ты думаешь, что поле Fields[0] поле у тебя строковое, а на самом деле на его месте стоит поле другого типа, например TDateTime.

Автор: Zero 28.8.2006, 14:37
Цитата(Berliner @  19.8.2006,  11:57 Найти цитируемый пост)
Здраствуйте хочу вставить занчения переменных в dbf вываливается ошибка  invalid variant type conversion

Berliner, а чё за dbf??? Если ты в базу 1С хочешь чёто отправить, то пиши мне на мыло, разберёмся.

Автор: Berliner 28.8.2006, 16:11
Цитата

то налицо несовпадение типов поля и переменной.
Перечень полей в компоненте ADOTable1 задан явно ?. Это можно проверить двойным кликом по компоненту ADOTable1. Если да, то не изменен ли там порядок следования полей по сравнению с тем, который был задан при создании таблицы ? Это я к тому, что возможно ты думаешь, что поле Fields[0] поле у тебя строковое, а на самом деле на его месте стоит поле другого типа, например TDateTime.


я так и подумал - дело в том что у меня все поля в этом dbf Charecter. Скаите а может ли играть роль то что я вставляю 2 поля а в dbf их штук 5-6. 

Автор: Fedia 28.8.2006, 23:26
Berliner, попробуем разобраться.
1. Замени TADOTable на TADODataSet, т.к. TADOTable http://forum.vingrad.ru/index.php?showtopic=93287 !
2. 
Цитата(Berliner @  28.8.2006,  16:11 Найти цитируемый пост)
я так и подумал - дело в том что у меня все поля в этом dbf Charecter. Скаите а может ли играть роль то что я вставляю 2 поля а в dbf их штук 5-6. 

На указанную тобой ошибку это не должно влиять, но для чистоты эксперимента создай например другую таблицу с 2-мя полями и протестируй на ней.
3. В пошаговом режиме, с помощью точки останова, пройди по следующему коду:
Код

var
  s: string;
begin
   s:='122143';
   ADODataSet1.Active:=true;
   ADODataSet1.Insert;
   if ADODataSet1.Fields[0].DataType = ftString then
   ADODataSet1.Fields[0].AsString:=s;
   if ADODataSet1.Fields[1].DataType = ftString then
   ADODataSet1.Fields[1].AsString:=s;
   ADODataSet1.Post;
end;

Попадает ли во время работы отладчик на строчки: 
Код

ADODataSet1.Fields[0].AsString:=s;
 и 
Код

ADODataSet1.Fields[1].AsString:=s;

Если нет, то посмотри в пошаговом режиме значение свойств DataType у полей Fields[0] и Fields[1].

Автор: Berliner 30.8.2006, 15:52


ПРоверил пошагам ошибка вылазит на строке ADOTable1.Active:=true. Взде потестил ADO коннекшин-работает
[code=delphi]
var
  s: string;
begin
   s:='122143';
   ADOTable1.Active:=true;
   ADOTable1.Insert;
   if ADOTable1.Fields[0].DataType = ftString then
   ADOTable.Fields[0].AsString:=s;
   if ADOTable1.Fields[1].DataType = ftString then
   ADOTable11.Fields[1].AsString:=s;
   ADOTable1.Post;
end;

Автор: Fedia 31.8.2006, 02:56
Цитата(Berliner @  30.8.2006,  15:52 Найти цитируемый пост)
ПРоверил пошагам ошибка вылазит на строке ADOTable1.Active:=true

Это уже немного конкретнее. Без обид, но если бы ты сразу об этом сказал, то больше недели, для этой ветки,  не пропало бы зря.
Свойство TableName у ADOTable1 задано ?
На события OnBeforeOpen и OnAfterOpen компонента ADOTable1 ничего не прописано ?

Автор: SergeBS 31.8.2006, 07:27
Berliner
Если у тебя dbf - читай
 http://forum.vingrad.ru/index.php?showtopic=92925
и бросай ADO. Не для того оно.

Автор: Berliner 4.9.2006, 10:54
Цитата

Свойство TableName у ADOTable1 задано ?
На события OnBeforeOpen и OnAfterOpen компонента ADOTable1 ничего не прописано ?

Свойство TableName- прописано.
 на события OnBeforeOpen и OnAfterOpen ничего не прописано. В чем может быть проблема? Вроде кннект к таблице есть. А че не вставляет?

Автор: Fedia 4.9.2006, 12:19
Цитата(Berliner @  30.8.2006,  15:52 Найти цитируемый пост)
ПРоверил пошагам ошибка вылазит на строке ADOTable1.Active:=true

Ошибку приведи...

Автор: Berliner 4.9.2006, 16:13
Invalid variant type conversion

Автор: Fedia 5.9.2006, 00:29
Цитата(Berliner @  4.9.2006,  16:13 Найти цитируемый пост)
Invalid variant type conversion

А, ты ж уже приводил. Сорри.

В общем, что бы долго не гадать, я сделал небольшой пример, в этом примере добавь твою процедуру добавления записи. Если заработает, то проблема была в строке подключения к таблице.

Автор: Berliner 5.10.2006, 11:59
Спасиб за файл. Но после строчки rAddo.Conntection:=true; вываливается ошибка Не найден драйвер......

Автор: Fedia 9.10.2006, 09:54
Цитата(Berliner @  5.10.2006,  11:59 Найти цитируемый пост)
вываливается ошибка Не найден драйвер......

Не ожидал. Тогда приведи значение твоей строки ConnectionString у TADOConnection.

Автор: Guest 9.10.2006, 15:29
у меня такая строка подключения. а Fedia написал процедуру подключения так я ее подключаю и она не работает. А на моей строке подключения пишет подключение  ок, а вставить не может в дбф
Код

Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="CollatingSequence=ASCII;DBQ=C:\VIKTOR\PROGRAMMING\DELPHI\PHONEH;DefaultDir=C:\VIKTOR\PROGRAMMING\DELPHI\PHONEH;Deleted=1;Driver={Microsoft dBase Driver (*.dbf)};DriverId=21;FIL=dBase III;FILEDSN=C:\Program Files\Common Files\ODBC\Data Sources\FoxPro.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=600;SafeTransactions=0;Statistics=0;Threads=3;UID=admin;UserCommitSync=Yes;"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)