در هنگام استفاده از دستور Update,Insert در ویستا اجازه نمیده و پیغام میده که شما چون از Updateable Query استفاده کرده اید نمی توانید عملیات را ادامه دهید ولی در ویندوز XP بدون مشکل عملیات انجام میشود
لطفا هر نظری دارید ممنون میشم بنویسید
با تشکر
در هنگام استفاده از دستور Update,Insert در ویستا اجازه نمیده و پیغام میده که شما چون از Updateable Query استفاده کرده اید نمی توانید عملیات را ادامه دهید ولی در ویندوز XP بدون مشکل عملیات انجام میشود
لطفا هر نظری دارید ممنون میشم بنویسید
با تشکر
سلام
گمان نکنم مشکل از ویستا باشد.
دیتابیستان چیست؟
مطمئن هستید فایل دیتابیس ReadOnly نیست؟ یا قیدی در ConnectionString اضافه نکرده اید؟
نه اصلا Readonly نیست و فقط تو ویستا دچار مشکل می شه در حالی که در ویندوز XP هیچ مشکلی نداره حتی چند برنامه بانک اطلاعاتی دیگه هم این مشکل رو تو ویستا دارن ولی تو Xp نه
سلام
بانک اطلاعاتی شما چیست؟
در شبکه کار میکنید یا در local ?
من از اولین افرادی بودم که ویستا را نصب کردم و تا حالا همچین مشکلی نداشتم.
اگر میتوانید نمونه کدی که میگویید مشکل دارد را آپلود کنید تا بررسی کنم.
موفق باشید.
بانک اطلاعاتی اکسس هستش و شبکه هم نیست و نسخه ویستا Home Basic هستش
به عنوان نمونه نمونه از کد ذخیره پرداخت که اشکال می گیره
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ممنون میشم اگر بررسی کنید
سلام
این کد شما در صورتی درست جواب میدهد که تمام مقادیر فیلدهای جدول عددی باشند!
ضمن اینکه اگر تصحیحش هم کنید، باز میتواند برای کاراکترهای خاص به مشکل برخورد کند.
شما حتماً باید از روش پارامتری استفاده کنید.
اگر نوع تک تک فیلدها را ذکر کنید میتوانم کد مناسب پارامتری را برایتان بنویسم.
موفق باشید.
قبل از اجرای تابع تمام فیلدها بررسی میشن و کاراکتر غیر مجاز نمی تونه وارد تابع بشه و تابع به درستی کار میکنه در ضمن احتیاجی نیست تمام فیلدها عددی باشند چون فیلد کاراکتری با ' ' مشخص میشه مثل فیلد Discription .
ولی مشکل من این نیست مشکل اینه که تو ویستا با اون پیغامی که گفتم روبرو میشم در حالی که تو ایکس پی همچین مشکلی وجود ندارد
به هر حال مشخصات فیلدها رو براتون مینویسم به همون روشی که گفتید برام بنویسید اونم امتحان میکنم ببینم تو ویستا کار می کنه!
idfactor=LongInteger
cash=Currency
chk=Currency
lend=Currency
discount=Currency
discription=Text
State=Byte
IdsanadBox=Long
سلام
بله درست است، من متوجه وجود تک کتیشن ها در متن فوق نشدم (تشخیصش کمی سخت بود و است!)در ضمن احتیاجی نیست تمام فیلدها عددی باشند چون فیلد کاراکتری با ' ' مشخص میشه مثل فیلد Discription .
=====
ضمناً برای مقادیر پولی در برنامه های ایرانی با توجه فقدان اعشار در مبالغ پولی ایران، بهتر است در انواع سیستم ها از نمونه های Currency و Money استفاده نکنید به جای آنها میتوانید از مقادیر صحیح و بسیار پرسرعت و با گنجایش زیاد Int32 و Int64 در انواع بانک ها استفاده کنید.
مقادیر Int32 تا حدود مثبت/منفی دو میلیارد ریال/تومان را میتوانند جای دهند.
و مقادیر Int64 تا حدود مثبت/منفی 9,000,000,000,000,000,000 ریال/تومان را میتواند جای دهد که ضمن سرعت بیشتر (و بعضاً حجم مساوی یا کمتر)، حدود 1000 بار بزرگتر از گنجایش مرسوم Currency است.
=====
در کل با انواع مطلوب خود شما من دستور زیر را پیشنهاد میکنم:
=====کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
- cash و chke و... که متغییر هستند؟ و TextBox که نیستند؟
- اگر با اجرای دستور فوق هر خطایی دریافت کردید، حتماً متن کامل خطا را اینجا بگذارید
- اگر از نسخه 2008 استفاده نمیکنید به جای آن خط شامل If کد زیر را بنویسید
(IIf(String.IsNullOrEmpty(TxtFac.Text), System.DBNull.Value, TxtFac.Text
- میتوانید به جای دستورات CInt و CDec و... از توابع اصلی Parse هم استفاده کنید. (توصیه بازدهی بیشتر!!!)
- انشا ا... جواب خواهد داد.
موفق باشید.
Last edited by _H2_; 23-12-2008 at 00:51.
کدی جالبیه حتما امتحانش میکنم
راستی Int32,Int64 معادل کدوم نوع داده در Access یا Sql هستند
از دستورات Cint , Cdec استفاده میکنم ولی اگر ممکنه درباره استفاده از توابع Parse یکم توضیح بدید
سلام
معادل Int32 در access در واقع همان Long Integer است که در زمان طراحی داخل خود access نشان داده میشود.راستی Int32,Int64 معادل کدوم نوع داده در Access یا Sql هستند
ولی معادل دقیق و کاملی برای یک متغییر صحیح 8 بایتی (Int64) در access وجود ندارد، شاید نزدیکترین معادل Decimal باشد.
معادل Int32 در بانک اطلاعاتی قدرتمتد sqlserver نوع int است و معادل Int64 هم نوع bigint .
در دات نت هم که هم نوع Int32 را داریم که در vb به ان integer هم گفته میشود و در #c هم به آن int گفته میشود.
و نوع Int64 را هم داریم که در vb و #c به ان long هم گفته میشود.
[quote]
از دستورات Cint , Cdec استفاده میکنم ولی اگر ممکنه درباره استفاده از توابع Parse یکم توضیح بدید
[/qoute]
تابع Parse متدی عضو کلاسس است و ساختارهای اصلی که بتوانن از string تبدیل شود این متد را دارند.
در اصل این متد String را به نوع مطلوب تبدیل میکند.
مثلاً:
با توجه به اینکه دستورات تبدیلی مثل CInt دستور و جزء کلمات رزو شده VB هستند، کامپایلر در شرایط خاص آن را به دستورات مختلفی کامپایل میکند.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مثلاً سه CInt زیر به یک کد IL یکسان کامپایل نمیشوند!!!
با وجود تفاوت ظاهری سه کد آخری ولی چون CInt کلمه رزو شده است، کامپایلر شرایط را سنجیده و کد مناسب را جایگزین میکند و این خیلی خوب است و استفاده از CInt را توجیح پذیر و منطقی تر میکند.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در واقع یک CInt با ورودی String خودش برای تبدیل از تابع Double.Parse استفاده میکند و بعد مقدار Double را به Integer تبدیل میکند!
نتیجتاً استفاده از Integer.Parse میتواند بهتر باشد ضمن اینکه Integer.TryParse بدون هیچ خطایی، یک boolean پس میدهد که نشان دهنده موفقیت/عدم موفقیت تبدیل است .
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)