مشکل در append کردن رکورد
کد زیر را درنظر بگیرید :
DataModule1.Table_temp_Host.Append;
DataModule1.Table_temp_Host.FieldValues['buyer']:=sComboBox9.Text+' '+sComboBox1.Text;
DataModule1.Table_temp_Host.FieldValues['date_d']:=SolarDatePicker1.Text;
DataModule1.Table_temp_Host.FieldValues['comments']:=sMemo1.Lines.Text;
DataModule1.Table_temp_Host.FieldValues['user_1']:=user_fullname;
DataModule1.Table_temp_Host.FieldValues['date_1']:=SolarDatePicker2.Text;
DataModule1.Table_temp_Host.FieldValues['last_modified']:=1234;
DataModule1.Table_temp_Host.FieldValues['state']:=0;
DataModule1.Table_temp_Host.Post;
ساختار جدول :
CREATE TABLE `tb_name`.`orders` (
`id` int(10) unsigned NOT NULL auto_increment,
`buyer` varchar(30) collate utf8_persian_ci NOT NULL,
`user_1` varchar(30) collate utf8_persian_ci NOT NULL,
`date_1` char(10) collate utf8_persian_ci NOT NULL,
`last_modified` int(10) unsigned NOT NULL,
`state` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;
وقتی کد بالا رو اجرا می کنم خطای زیر ر اتفاق می افته :
cannot access field last_modified as type variant
دلیلش چیه؟ چکار کنم؟ توضیح رو هم بدم که این فیلد اول از نوع datetime بود بعد عوضش کردم و int شد.
نقل قول: مشکل در append کردن رکورد
راستش دلیل این رو نمیدونم ، ولی کلا کار کردن با واریانت کار بسیار پرهزینه (از لحاظ پرفرمنس) و بسیار نا امن از نظر باگ دار شدن برنامه هست و استفاده ازش فقط در زمانهای خاص توصیه میشه در حات عادی باید بنویسی FieldByname.AsInteger یا .... اگر مشکل داشتی بازم بگو ببینیم مشکل چیه...
نقل قول: مشکل در append کردن رکورد
نقل قول:
نوشته شده توسط
ghabil
راستش دلیل این رو نمیدونم ، ولی کلا کار کردن با واریانت کار بسیار پرهزینه (از لحاظ پرفرمنس) و بسیار نا امن از نظر باگ دار شدن برنامه هست و استفاده ازش فقط در زمانهای خاص توصیه میشه در حات عادی باید بنویسی FieldByname.AsInteger یا .... اگر مشکل داشتی بازم بگو ببینیم مشکل چیه...
سپاس. با تغییر واریانت مشکل حل شد اما کماکان برام سواله که چرا؟!؟؟
نقل قول: مشکل در append کردن رکورد
ببین مکانیزم تبدیل واریانت به تایپ مکانیزمه نسبتا پیچیده ای هست، البته سورسش موجود هست و میتونی بخونی ، اما همینطوری توی نگاه اول حدسی میگم که شاید کامپایلر ععدت رو از نوع Float تشخیص میده بجای Integer و در نتیجه مثلا مقداری که ست میشه 1234.00 هست که موجب خطا میشه
نقل قول: مشکل در append کردن رکورد
سلام
برای ذخیره تاریخ به صورت شمسی بهترین راه استفاده از NVarchar 10 یا در اکسس استفاده از TEXT 10 است.
--یاهوو--
نقل قول: مشکل در append کردن رکورد
بهترین راه ذخیره تاریخ شمسی و میلادی استفاده از تایپ Date هست. جستجو کنید قبلا توضیح داده شده چرا