PDA

View Full Version : سوال: چگونه میتوان رکوردهای یک فایل تکس به صورت نمونه ذیل رو به بانک اطلاعاتی مان به صورت یکجا اضافه نمود؟



mehregan alinia
سه شنبه 21 مرداد 1393, 17:41 عصر
اطلاعات صورتحساب ما به صورت ماهیانه و به صورت اینترنت دریافت میکنیم که شامل ۴۰۰ رکورد در ماه است , که میخواهیم برای راحتی کار اطلاعات تکست این صورتحساب رو به صورت یکجا به بانک اطلاعاتی اسکیوال انتقال بدهیم , حال میخواستم یک راهنمایی بدید چطور میشود این اطلاعات را طریق کد نویسی در سی شارپ به اسکیوال انتقال بدهیم و طلاعات تکست صورتحساب بانکی ماههای بعد را به ترتیب از آخرین اطلاعات ذخیره شده ماه قبل وارد کنیم و مشکلی پیش نیاید .
ستونهای ما در صورتحساب
Tarikh;mablagh;ghabz;nam
فایل یکماهه به این صورت است و هر ماه این تعداد تراکنش داریم میخواستم بدونم چطور ما میتونیم با کد نویسی در سی شارپ به صورت یکجا این رکوردها را به اسکیو ال انتقال بدیم و مهمتر اینکه چطور میتونیم ماههای بعد را هم از آخر این اظلاعات ذخیره شده اضافه نماییم

مبلغ|توضیحات|شرح|شماره حساب|
17135455600733| نقدي |740978 |44400.0000|
17135455600733| نقدي |223080 |60000.0000|
17135455600733| نقدي |223081 |56670.0000|
17135455600733| نقدي |740913 |50000.0000|
17135455600733| نقدي |740914 |50000.0000|
17135455600733| نقدي |740915 |57700.0000|
17135455600733| نقدي |740979 |50000.0000|
17135455600733| نقدي |740980 |50000.0000|
17135455600733

kahe.mehrdad
سه شنبه 21 مرداد 1393, 17:57 عصر
با سلام به نظر من باید فایل تکست یک بار باید پیمایش بشه و به صورت زیر کد ها split بشن.



string line;


System.IO.StreamReader file = new System.IO.StreamReader("c:\test.txt");
while((line = file.ReadLine()) != null)
{
string[] fields = text.Split("|");
// save strings to database
}


file.Close();

mehregan alinia
سه شنبه 21 مرداد 1393, 18:33 عصر
با سلام به نظر من باید فایل تکست یک بار باید پیمایش بشه و به صورت زیر کد ها split بشن.



string line;

System.IO.StreamReader file = new System.IO.StreamReader("c:\test.txt");
while((line = file.ReadLine()) != null)
{
string[] fields = text.Split("|");
// save strings to database
}


file.Close();


حالا اکر ماههای آینده به این صورت ما تعداد رکورد داشته باشیم چطور میتونیم با کد نویسی از آخرین اطلاعات ثبت شده ماه قبل ثبت اطلاعات جدید رو داشته باشیم ....

meysamsh91
سه شنبه 21 مرداد 1393, 18:45 عصر
سلام عزیزم
شما باید طراحی جداول بانکتون رو تغییر بدین و در اصلاح عملیات نرمال سازی رو اعمال کنید.
به این صورت :
جدول مشتریان : (IDCustomer,Name)
جدول مالی ( IDFinancial,Price)
جدول رابط مشتری و مالی (ID,IDCustomer,IDFinancial,Date)
پس از این کار میتونید اطلاعات مورد نیاز رو به واسطه ارتباط با جداول (Join) واکشی نمایید.
اگر نیاز به توضیح بیشتر دارید در خدمتم.
موفق و پیروز باشید.

mehregan alinia
سه شنبه 21 مرداد 1393, 19:46 عصر
سلام عزیزم
شما باید طراحی جداول بانکتون رو تغییر بدین و در اصلاح عملیات نرمال سازی رو اعمال کنید.
به این صورت :
جدول مشتریان : (IDCustomer,Name)
جدول مالی ( IDFinancial,Price)
جدول رابط مشتری و مالی (ID,IDCustomer,IDFinancial,Date)
پس از این کار میتونید اطلاعات مورد نیاز رو به واسطه ارتباط با جداول (Join) واکشی نمایید.
اگر نیاز به توضیح بیشتر دارید در خدمتم.
موفق و پیروز باشید.


عالی بود اگر جدول به صورت جوین ساختیم حالا دستور برای انتقال اظلاعات ماه جدید به صورت یکجا و ذخیره اون از آخرین رکورد ماه گذشته چه جور است . ذوست عزیز مون توضیح دادند که چه جور ما به صورت یکچا انتقال بدیم . حالا اگر همین لیست رو ماه بعدی با اعداد ارقام متفاوت داشته باشیم و بخواهیم از ادامه اطلاعات قبلی insert کنیم چگونه است . مرسی از راهنمایی

meysamsh91
سه شنبه 21 مرداد 1393, 21:43 عصر
فکر می کنم بهتر باشه یک مقدار در خصوص ارتباط جداول بانک اطلاعاتی توضیح بدم تا با مفهوم Join کمی بهتر آشنا بشید و هر کجا براتون نا مفهوم بود دستور بفرمایید تا توضیحات تکمیلی رو ارائه کنم.
هدف از ایجاد ارتباط بین جداول : واکشی اطلاعات مشترک از دو یا چند جدول هست. اگر ارتباطی وجود نداشته باشد این عمل هم امکان پذیر نخواهد بود و پس از ایجاد ارتباط می توانیم توسط فرمان Join اطلاعات مشترک را خارج کنیم. ( منبع : صفحه 36 کتاب اصلی Exam 70-433 Microsoft)
نحوه ایجاد ارتباط : ایجاد ارتباط از طریق کلید های اصلی (PK) و کلید فرعی (FK) در جداول می باشد.
برای اینکار شما باید در جدول اصلی مثل جدول مشتریان که بالا عرض کردم خدمتتون یک کلید اصلی داشته باشید که من با نام IDCustomer تعریف کردم. و همچنین در جدول مالی کلید اصلی را IDFinancial تعریف کردم.
این 2 جدول در واقع 2 جدول اصلی ما هستند که اطلاعات مربوط به خودشون رو ذخیره می کنند. حالا برای اینکه متوجه بشیم چه رکوردی از جدول مشتریان با چه رکوردی در جدول مالی مشترک هستند بعنی اینکه چه پرداختی مربوط به چه کسی هست و یا چه شخصی تا کنون چه مبالغی را پرداخت کرده است نیاز به یک جدول رابط داریم که در SQL اصطلاحاً به جداول رابط TOR میگیم.
حالا جدول TOR ما که در بالا با اسم جدول رابط مشتری و مالی تعریف شده نیازمند یک کلید اصلی و چند کلید فرعی هست.
این جدول رابط (TOR) یک کلید اصلی دارد که بعداً میتوان به نحو مقتضی از آن استفاده نمود ، و کلید های فرعی جدول TOR شامل کلید های اصلی جدول مشتریان و جدول مالی هستند یعنی IDCustomer و IDFinancial.
حال در این جدول TOR یک فیلد به نام Date تعریف شده برای درج تاریخ مد نظر.
در حال حاضر شما یک جدول نرمال سازی شده در اختیار دارید که برای واکشی اطلاعات جهت : نمایش ، حذف ، انتقال ، کپی و ...... قابل بهره برداری هست.
و اما در خصوص فرمایش شما که "جهت انتقال اطلاعات یکماه و ذخیره آن از آخرین رکورد " خدمتتون عرض کنم چندین روش وجود دارد.
روش اول : ایجاد شرط جهت واکشی اطلاعات و اعمال عملیات ( نمایش ، انتقال ، کپی ، حذف و غیره)
به عنوان مثال شما هنگام شرط گذاری تعریف می کنید که اطلاعات مالی که فیلد Date آن مربوط است از تاریخ 2014-08-01 تا تاریخ 2014-08-30 را نمایش ، حذف ، انتقال ، کپی و .... دهد.
نحوه : بکارگیری دستور Join در فرمان Select جهت واکشی اطلاعات مشترک و قرار دادن یک یا چند دستور شرطی برای فیلد Date.
امیدوارم توضیحاتم مفید واقع شده باشه و عذر خواهی میکنم اگر سریع پاسخ نهایی رو نمیدم هدفم این هست مطلب رو درک بفرمایید.
در صورت نیاز امر بفرمایید سایر روش ها رو توضیح بدم.
موفق و پیروز باشید

meysamsh91
سه شنبه 21 مرداد 1393, 21:49 عصر
در خصوص نحوه ذخیره سازی از فایل txt به بانک هم، یک مقدار تلاش کنید اگر به نتیجه نرسیدید بفرمایید تا براتون توضیح بدم.