ورود

View Full Version : سوال: خطایی که معلوم نیست چیه ؟



MohsenTi
پنج شنبه 30 مهر 1388, 14:49 عصر
T_Orders.Edit;
T_OrdersTakhfif.Value:=StrToInt(LMDEdit4.Text);
T_OrdersTedad.Value:=StrToInt(LMDEdit3.Text);
T_OrdersOrderID.Value:=T_OrdersCode.Value;
T_OrdersCodeKala.Value:=T_KalaCode.Value;
T_OrdersUnitPrice.Value:=T_KalaMablagh.Value;
T_Orders.Post;
کدی رو که نوشتم برای پر کردن داده های جدولم استفاده می کنم .
تا وقتی دیتابیسم Access بو خطایی وجود نداشت ولی از موقعی که SQL شد این خطا رو میده کسی میدونه چیه ؟
خطا
An Unknown error has occurred

hadisalahi2
پنج شنبه 30 مهر 1388, 16:04 عصر
در کدوم خط از برنامه این خطا رو میده؟
خط به خط برنامه رو Trace کنید ببینید خطا توی کدوم خط اتفاق می افتد.
در این کدها که خطایی وجود ندارد
شاید مشکل در جایی دیگر باشد.
البته من هم چند وقت پیش همچین خطایی در مورد استفاده از بانک اکسس داشتم
یک بار اکسس رو حذف کردم و دوباره نصب کردم، مشکل رفع شد.

MohsenTi
پنج شنبه 30 مهر 1388, 17:40 عصر
از خط دوم به بعد ارور میده تا آخرین خط !!

حمیدرضاصادقیان
پنج شنبه 30 مهر 1388, 23:54 عصر
سلام.من این مشکل رو با bde داشتم که بعد از تبدیل به ado مشکل حل شد.
موفق باشید

MohsenTi
جمعه 01 آبان 1388, 00:24 صبح
من از ado استفاده می کنم

hadisalahi2
جمعه 01 آبان 1388, 11:33 صبح
شما اکسس رو دوباره نصب گردید تا ببینید درست شد یا نه؟
البته این مشکل در زمانی که از اکسس 2007 استفاده میکردم ، برای من نیز اتفاق افتاد.

MohsenTi
جمعه 01 آبان 1388, 12:29 عصر
بانک من SQL هست و این کارو هم کردن حتی دلفی رو هم پاک کردن دوباره نصب کردم نشد

young_man1365
جمعه 01 آبان 1388, 17:09 عصر
حالا که بانکت sql هستش چرا با کوئری کار نمیکنی؟:متفکر:

MohsenTi
شنبه 02 آبان 1388, 09:53 صبح
برای پر کردن داده ها چطوری باید از کوری استفاده کرد ؟

hadisalahi2
شنبه 02 آبان 1388, 10:34 صبح
دستور Insert رو میتونی در سایت جستجو کنی .
برای این کار بهتره اول با دستورات SQL آشنا بشی.
برای این کار کلی فایهای آموزش در اینترنت در قالب PDF هستش که کافیه فقطدر گوگل یه جستجو ساده انجام بدی.
یا حق

MohsenTi
شنبه 02 آبان 1388, 18:34 عصر
اینو بلدم منظور من این بود که می ارزه خطایی که یا Try ex حل میشه و فقط نمی دونیم چیه رو به کمک کوئری حل کنیم
تازه چرا فقط برای یه تیبل این حالت پیش میاد ؟
چرا همه ی دیتابیس خطا نمیده ؟
چرا دلفی نمی دونه چیه ؟
چرا SQL ارور مناسب رو ارسال نمی کنه ؟

hadisalahi2
یک شنبه 03 آبان 1388, 09:29 صبح
آره چرا باید ارزش نداشته باشه؟
در ضمن این همه سوال در یک پست؟
خوب وقتی دلفی نمیدونه خطا چیه ما باید بدونیم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
واسه این همه دیتا بیس خطا نمیده ، چون فقط همون جدول مشکل داره.
در ضمن شما از کلمات کلیدی در تعریف فیلدهاتون استفاده نکردید؟

vcldeveloper
یک شنبه 03 آبان 1388, 11:23 صبح
می ارزه خطایی که یا Try ex حل میشه و فقط نمی دونیم چیه رو به کمک کوئری حل کنیم
قبلا توضیح دادم، try-except به خودی خود خطایی رو حل نمیکنه، بلکه فقط به خطا میگه، "خفه شو!"


چرا دلفی نمی دونه چیه ؟
دلفی قرار نیست بدونه خطا چی هست، چون خطا در سطح دیتابیس اتفاق میافته، و توسط ADO برگشت داده میشه. دلفی فقط خطای برگشت داده شده از ADO را به شما نمایش میده.

MohsenTi
یک شنبه 03 آبان 1388, 11:31 صبح
یه چیزی هست بهش میگن روابط طولی ! چون Ado جزئی از دلفی میشه گفت دلفی نمی فهمه !
منظور من از حل شدن با try -e این بود که نه کاربر می فهمنه نه برای کاربر مشکل درست می کنه !

در ضمن شما از کلمات کلیدی در تعریف فیلدهاتون استفاده نکردید؟
اینطوری که دلفی ارور میداد البته بعضی وقتا دلفی کاری نداره کلمه کلیدی باشه یا نه
مثل message:TMessage; و غیره پس اشکال این نیست وگرنه الان تقریبا هیچ کامپوننتی از دلفی کار نمی کرد !

Ebrahim Asadi
یک شنبه 03 آبان 1388, 14:12 عصر
اگر OrderID فيلد Identity جدول Orders باشد نمي تواني به آن مقداري بدهي. مقدارش پس از هر بار Insert كردن در جدول Orders، توسط SQL Server توليد مي شود.




T_OrdersOrderID.Value:=T_OrdersCode.Value;

vcldeveloper
یک شنبه 03 آبان 1388, 23:04 عصر
یه چیزی هست بهش میگن روابط طولی ! چون Ado جزئی از دلفی میشه گفت دلفی نمی فهمه !
ADO جزئی از دلفی نیست! ADO کتابخانه ایی برای ایجاد رابط برنامه نویسی واحد برای بانک های اطلاعاتی مختلف هست که توسط مایکروسافت توسعه داده میشد، و جزئی از سیستم عامل ویندوز محسوب میشه.
کامپوننت های با پیشوند ADO در دلفی فقط کلاس هایی هستند که کار با ADO را برای برنامه نویسان دلفی آسانتر می کنند. خودِ دلفی و کلاس های آن نقشی در ADO ندارند. درخواست های شما را به ADO می دهند، و جواب ADO را به شما برمیگردانند. اگر قرار بود این به اصطلاح روابط طولی شما همینطوری کش بیاد، نهایتش میرسه به برنامه نویس!

MohsenTi
یک شنبه 03 آبان 1388, 23:22 عصر
اگر OrderID فيلد Identity جدول Orders باشد نمي تواني به آن مقداري بدهي. مقدارش پس از هر بار Insert كردن در جدول Orders، توسط SQL Server توليد مي شود.
مقداری که تو OrderID می ریزم در از فیلد ID در تیبل Orders هست که به هم رلیشن دارند
درصورتی که این کارو نکنم خطا می ده .
این خطا هم مربوط به چیزی که شما گفتید نیست Ado اینو میفهمه

SYNDROME
دوشنبه 04 آبان 1388, 07:27 صبح
در ADO ازفیلد lookup استفاده کرده اید؟
اگر استفاده کرده اید:
زمانی که از فیلد lookup استفاده کنید در موقع اضافه کردن رکورد با مقدار دهی هر فیلدی پیغام فوق ظاهر می شود.
اگر فایل Exe را اجرا کنید دیگر این پیغام را نمی بینید.
موفق باشید

JaguarXF
دوشنبه 04 آبان 1388, 07:56 صبح
T_Orders.Edit;
T_OrdersTakhfif.Value:=StrToInt(LMDEdit4.Text);
T_OrdersTedad.Value:=StrToInt(LMDEdit3.Text);
T_OrdersOrderID.Value:=T_OrdersCode.Value;
T_OrdersCodeKala.Value:=T_KalaCode.Value;
T_OrdersUnitPrice.Value:=T_KalaMablagh.Value;
T_Orders.Post;کدی رو که نوشتم برای پر کردن داده های جدولم استفاده می کنم .
تا وقتی دیتابیسم Access بو خطایی وجود نداشت ولی از موقعی که SQL شد این خطا رو میده کسی میدونه چیه ؟
خطا
An Unknown error has occurred

:متعجب:

جواب مستقیم سوالت رو نمیدونم ولی موضوعات وخیم تری مشاهده میشه در این کدها که مفید دونستم بگم:
- LMEdit ! اسم با مسما تری انتخاب کنید.
- هیچ چکی صورت نگرفته که مقادیر ، مقادیر معتبر و مجازی هستند یا نه .
- نام گذاریها نصفه فارسی نصفه انگلیسی هست.
- هیچ فرورفتگی در سطح کدها مشاهده نمیشه و ناخواناست .
- از همه بدتر: برنامه بصورت دوران ماقبل شی گرایی نوشته شده! اونهم سال 2009 ! بهتره کلاسی برای اون Orders در نظر بگیرید با اعضایی مثل همون unit price و .. آبجکت Orders رو ایجاد کنید و مقدار دهی . برای دخیره در دیتابیس یا خواندن از اون هم دو تا متد در کل برنامه داشته باشید . یکی متدی بنام مثلا Marshall و دیگری UnMarshal . وظیفه شون هم این باشه که آبجکتهایی که بهشون ارسال میشه رو - مثلا Orders - در دیتابیس بنوبسند یا بخونند و مقدار دهی کنند.

MohsenTi
دوشنبه 04 آبان 1388, 14:28 عصر
جواب مستقیم سوالت رو نمیدونم ولی موضوعات وخیم تری مشاهده میشه در این کدها که مفید دونستم بگم:
- LMEdit ! اسم با مسما تری انتخاب کنید.
- هیچ چکی صورت نگرفته که مقادیر ، مقادیر معتبر و مجازی هستند یا نه .
- نام گذاریها نصفه فارسی نصفه انگلیسی هست.
- هیچ فرورفتگی در سطح کدها مشاهده نمیشه و ناخواناست .
- از همه بدتر: برنامه بصورت دوران ماقبل شی گرایی نوشته شده! اونهم سال 2009 ! بهتره کلاسی برای اون Orders در نظر بگیرید با اعضایی مثل همون unit price و .. آبجکت Orders رو ایجاد کنید و مقدار دهی . برای دخیره در دیتابیس یا خواندن از اون هم دو تا متد در کل برنامه داشته باشید . یکی متدی بنام مثلا Marshall و دیگری UnMarshal . وظیفه شون هم این باشه که آبجکتهایی که بهشون ارسال میشه رو - مثلا Orders - در دیتابیس بنوبسند یا بخونند و مقدار دهی کنند.
من که همه ی کد رو که نمی تونم براتون بزارم !
مشکل هم همونیه که SYNDROME فرمودن .