PDA

View Full Version : مشکل ثبت اطلاعات!



Narges-s
پنج شنبه 12 شهریور 1388, 23:42 عصر
سلام
من روی پروژه ی حقوق و دستمزد کار میکنم . توی یکی از فرم هام که اسمش Persinfo هستش و برای وارد کردن اطلاعات کارمندان طراحی کردم، از 4 تا ADODataSet استفاده کردم.

فرم رو هم از حالت AtoCreate خارج کردم یا به عبارتی برای نمایش اون از این کد استفاده کردم :

persinfo:=Tpersinfo.Create(Application);
persinfo.ShowModal();
persinfo.Free;

اما موقعی که اطلاعات رو وارد میکنم و روی دکمه ی ثبت کلیک میکنم ارور میده . توی On Click دکمه ی ثبت هم این کد ها رو نوشتم :

ADODataSet1.Post;
ADODataSet2.Post;
ADODataSet3.Post;
ADODataSet4.Post;

و اروری هم که داده میشه به این شکل هستش :


---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message 'Code page translations are not supported for the text data type. From: 1256 To: 1252'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


ممنون میشم اگه اشکال کارم رو بهم بگید و منو راهنمایی کنین . متاسفانه به استادم دسترسی ندارم واسه همین توی این جور مسائل پروژه ام با مشکل رو به رو شدم .:ناراحت:

vcldeveloper
پنج شنبه 12 شهریور 1388, 23:59 عصر
مشخص نکردید از چه بانکی استفاده می کنید. به نظر میاد که بانک تون MS SQL Server 2000 باشه. این یک خطای شناخته شده در SQL Server 2000 هست، و مایکروسافت هم بهش اشاره کرده، و از کاربران خواسته که آخرین سرویس پک مربوط به SQL Server 2000 را نصب کنند:
http://support.microsoft.com/kb/317956

این مشکل زمانی پیش میاد که تنظیمات زبان کامپیوتر کلاینت با تنظمیات پیش فرض زبان در SQL Server تفاوت داشته باشه. این مشکل بر روی فیلدهای از نوع Text غیر یونیکد بوجود میاد. یک راه برای دور زدن این خطا این هست که از nText (معادل یونیکدی Text) بجای نوع داده Text استفاده کنید.

در ضمن، وقتی فرمی را میسازید، آن را نمایش میدید، و در پایان کار آزاد می کنید، حتما از بلوک try-finally استفاده کنید. الان وقتی شما خطا دریافت می کنید، بدلیل استفاده نکردن از آن بلوک، کد آزاد سازی فرم اجرا نمیشه، و این موجب نشت حافظه میشه.

Narges-s
جمعه 13 شهریور 1388, 00:21 صبح
مشخص نکردید از چه بانکی استفاده می کنید.

من از SQL Server 2000 استفاده میکنم . فراموش کردم بگم . ببخشید.


در ضمن، وقتی فرمی را میسازید، آن را نمایش میدید، و در پایان کار آزاد می کنید، حتما از بلوک try-finally استفاده کنید. الان وقتی شما خطا دریافت می کنید، بدلیل استفاده نکردن از آن بلوک، کد آزاد سازی فرم اجرا نمیشه، و این موجب نشت حافظه میشه.

من متوجه نشدم میشه کدی که باید استفاده کنم رو بگید؟ :متفکر:

vcldeveloper
جمعه 13 شهریور 1388, 01:05 صبح
من متوجه نشدم میشه کدی که باید استفاده کنم رو بگید؟


persinfo:=Tpersinfo.Create(Application);
try
persinfo.ShowModal();
finally
persinfo.Free;
end;

این کد به دلفی میگه که تحت هر شرایطی، حتی اگر در زمان نمایش فرم خطایی رخ داد، باید متد Free فراخوانی بشه، و فرم آزاد بشه.


من از SQL Server 2000 استفاده میکنم .
خب، پس مشکلتان همانی هست که در پست قبلی گفتم، و لینکش را دادم؛ یا بجای فیلد های نوع Text از nText استفاده کنید، یا آخرین سرویس پک منتشر شده برای SQL Server 2000 را نصب کنید.

توضیحات تکمیلی در همان لینک پست قبل داده شده.