PDA

View Full Version : خطا در insert یه جدول................؟



tik_tak
پنج شنبه 02 اسفند 1386, 16:44 عصر
خطا


debugger Exception Notification
project project1.exe raised exception class EVariantTypecastError
with message'Could not conver variant of type(Olestr)into type(Boolean)'.
process stopped.Use step or run to continue
ok..............help


کد برنامه :



DataModule2.ADOTable2.Insert;
if DataModule2.ADOTable4.Locate('name-gooshy',Edit3.Text,[LoCaseInSensitive]) = True
then
DataModule2.ADOTable2.FieldByName('gheimat').Value :=
DataModule2.ADOTable4.FieldValues['gheimat'];
DataModule2.ADOTable2.Post;


رو این خط خطا میده


DataModule2.ADOTable2.FieldByName('gheimat').Value :=
DataModule2.ADOTable4.FieldValues['gheimat'];

vcldeveloper
پنج شنبه 02 اسفند 1386, 17:26 عصر
بجای استفاده از Value و FieldValues نوع فیلد را دقیقا مشخص کنید، مثلا اگر نوع فیلد gheimat در مثال بالا Integer هست:

AdoTable2.FieldByName('gheimat').AsInteger := AdoTable4.FieldByName('gheimat').AsInteger;

Amir_Safideh
پنج شنبه 02 اسفند 1386, 17:42 عصر
این کد رو بزن :

DataModule2.ADOTable2.Insert;
if DataModule2.ADOTable4.Locate('name-gooshy',Edit3.Text,[LoCaseInSensitive]) = True then
begin
DataModule2.ADOTable2.FieldByName('gheimat').AsFlo at:=
DataModule2.ADOTable4.FieldByName('gheimat').AsFlo at;
DataModule2.ADOTable2.Post;
End;
موفق باشید .

tik_tak
پنج شنبه 02 اسفند 1386, 18:02 عصر
سلام
اون خطاهه حل شد...خودم اشتباه کرده بودم
نوع فیلد name-gooshy زده بودم نامبر
اون رفع شد....
اما ::::::::::::::::::::::::!
من اگه نام گوشی همراه رو فارسی بنویسم تو همون جدول گوشی ها
نمیشناسدش ؟چرا؟
ولی وقتی انگلیش مینویسم پیداش میکنه ! یعنی این قسمت جواب میده :


DataModule2.ADOTable4.Locate('name-gooshy',Edit3.Text

واینم بگم ناو گوشی کلید اصلیه !!

مجبور شدم از یه کومبو باکس استفاده کنم وبه جدول گوشی هم یه
فیلد اضافه کردم به اسم id از جنس autonumber
اینچوری هر گوشی یه شماره داره :
گوشی هارو از جدول گوشیها آوردم تو کمبو باکس.......
اینجوری:


for i:=1 to DataModule2.ADOTable4.RecordCount do
begin
ComboBox1.items.add(DataModule2.ADOTable4.fields[1].Value) ;
DataModule2.ADOTable4.next ;
end ;


این کدو اینجوری نوشتم : واسه اینی که کاربر از کومبو باکس نام گوشیشو انتخاب کنه
و شماره این اسمه انتخاب شده ، تو کمبو باکس با آی دی مقایسه بشه؟؟


DataModule2.ADOTable2.Insert;
if DataModule2.ADOTable4.Locate('id',ComboBox1.ItemIn dex,[LoCaseInSensitive]) = True
then
DataModule2.ADOTable2.FieldByName('gheimat').Value :=
DataModule2.ADOTable4.FieldValues['gheimat'];
DataModule2.ADOTable2.Post;


خطا نمیده ولی چیزی نشون نمیده
ایراد از اینجاست گمونم :


('id',ComboBox1.ItemIndex

dkhatibi
پنج شنبه 02 اسفند 1386, 19:53 عصر
fields[1].Value)
فیلدها را با نام بیابید نه با ایندکس.

FieldByName

LoCaseInSensitive
لازم نیست بذارید. پارامتر آخر را به شکل [] بنویسید کافیه!
متد Locate را قبل از Insert فراخوانی کنید نه بعد از اون


خطا نمیده ولی چیزی نشون نمیده
ایراد از اینجاست گمونم :


('id',ComboBox1.ItemIndex


این را امتحان نمایید

comboBox1.items[combobox.1.text].itemindex
البته شاید باید چیزی شببه این باشه اگر اشتباه نوشته باشم خودتون اصلاحش کنید.

vcldeveloper
جمعه 03 اسفند 1386, 06:54 صبح
من اگه نام گوشی همراه رو فارسی بنویسم تو همون جدول گوشی ها
نمیشناسدش ؟چرا؟
ولی وقتی انگلیش مینویسم پیداش میکنه !
1- این سوال ربطی به این تاپیک نداره.
2- این سوال را در تاپیک مجزایی پرسیدید.
3- وقتی به جواب سوال خود می رسید، دکمه "حل شده" را کلیک کنید.