الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارجو المساعد في برنامج استخراج نصوص من ملف تكست

بدأه Mejo Magic في 18 يناير 2012 · 5 رد · 578 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني

اتمنى القى حل عندكم لبرنامج يقوم باستخراج البيانات من ملف تكست واضافتها لقاعدة بيانات

انا فتحة ملف التكست من الفيجوال واستخرجة البيانات وملف التكست يحتوي على اكثر من سطر

بحيث يكون كل سطرين بملف التكست يمثلون صف بقاعدة البيانات والملف يحتوي على اكثر من صف بقاعدة البيانات (اكثر من سطرين بملف التكست)

انا حاولت استخدم الـ substring ومشى معي فقط بأول سطر لان السطر الثاني راح يتغير الاندكس تبعو

محتاج ForLoop بحيث يقرا كل سطرين ويحفظ الداتا اللي فيها وينزل للسطرين اللي بعدهم

وهذا الكود اللي كتبته انا

string path = @"C:\Documents and Settings\Administrator\My Documents\MejoProject\MASTER.PRD120108.TXT";

            string input = "";
            StreamReader sr = new StreamReader(path); //Defaine the connector and show its path

            OleDbConnection myCon = new OleDbConnection();
            myCon.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\documents and settings\administrator\my documents\visual studio 2010\Projects\samp\samp\app\test.mdb;Persist Security Info=True";
            OleDbCommand myCom = new OleDbCommand();
            myCom.Connection = myCon;
            myCon.Open();
            myCom.CommandText = "INSERT INTO tester (ORGX,ACCT,LOGO) VALUES (@ORGX,@ACCT,@LOGO)";
            while (sr.EndOfStream != true)
            {
                input += sr.ReadToEnd();
                ORGX += input.Substring(0, 3);
                myCom.Parameters.AddWithValue("ORGX", ORGX);
                ACCT = input.Substring(3, 19);
                myCom.Parameters.AddWithValue("ACCT", ACCT);
                LOGO = input.Substring(22, 3);
                myCom.Parameters.AddWithValue("LOGO", LOGO);
                myCom.ExecuteNonQuery();
            }

والناتج زي ماذكرت بالاول مخرجات سطر واحد فقط وتتكرر في قاعدة البيانات

مشكورين مقدماً واتمنى اني ما اطلت

تم تعديل هذه المشاركة بواسطة Mejo Magic في 18 يناير 2012 في 19:00

#2

ممكن تستخدم قاعدة البيانات مباشرا باستخدام DTS Import and Export Data

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 19 يناير 2012 في 16:01

#3

مشكووور على ردك اخوي بس انا ماقد تعاملت مع الليا تقول عنها ابد بس راح اقرا عنها وياليت لو توضيح بسيط منك يكون احسن مشكووور مرره ثانيه

#4

اخوي خلاص انا ماعاد عندي مشكلة بستخراج البيانات من ملف التكست الحين مشكلتي بس حفظ البيانات بقاعدة البيانات

كل مانفذة البرنامج يحفظ سجل واحد ويكرره على باقي السجلات

اتمنى بس طريقة حفظ البيانات للداتا بيس

هذا الكود الاخير

            OleDbConnection myCon = new OleDbConnection();
            myCon.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\My Documents\Visual Studio 2010\Projects\samp\samp\dbb\db1.mdb;Persist Security Info=True";
            OleDbCommand myCom = new OleDbCommand();
            myCom.Connection = myCon;
            myCon.Open();
            myCom.CommandText = "INSERT INTO hope (ORGX,ACCT,LOGO,SHRTNAME,DELMTR) VALUES (@ORGX,@ACCT,@LOGO,@SHRTNAME,@DELMTR)";
            while ((input = sr.ReadLine()) != null)
            {
                input += sr.ReadLine();
                ORGX = input.Substring(0, 3);
                myCom.Parameters.AddWithValue("ORGX", ORGX);
                ACCT = input.Substring(3, 19);
                myCom.Parameters.AddWithValue("ACCT", ACCT);
                LOGO = input.Substring(22, 3);
                myCom.Parameters.AddWithValue("LOGO", LOGO);
                SHRTNAME = input.Substring(25, 20);
                myCom.Parameters.AddWithValue("SHRTNAME",SHRTNAME);
                DELMTR = input.Substring(2039, 1);
                myCom.Parameters.AddWithValue("DELMTR", DELMTR);
                myCom.ExecuteNonQuery();

والفكره من الكود اللي فوق هو ان البرنامج راح يخش اللوب ويسند كل قيمه لمتغيرها حسب الاندكس لين اخر متغير ويجي بعد كذا للـ executeNonQuerey ويبدا للسطر الثاني وهكذا

بس المشكله انو يكرر السطر الاول بالداتا بيس

اتمنى القى حل عندكم

يعطيكم العافية

تم تعديل هذه المشاركة بواسطة Mejo Magic في 20 يناير 2012 في 19:52

#5

جرب ازالة هذا السطر اول سطر بعد while

 input += sr.ReadLine();

انظر الرابط

الرابط الخاص بي

#6
KARIMSOFT كتب:

جرب ازالة هذا السطر اول سطر بعد while

 input += sr.ReadLine();

انظر الرابط

الرابط الخاص بي

مشكووور اخوي KARIMSOFT لتجاوبك معي

البرنامج الحين شغال

يعطيك الف عافية :)

تحياتي لك

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…