kitcat_m18
جمعه 22 مرداد 1389, 18:43 عصر
ضمن سلام و عرض خسته نباشید و آرزوی قبولی طاعات و عبادات کلیه مسئولین و دوستان زحمتکشم در این بخش می خواستم چند تا از مشکلاتی که در برنامه نویسی VB داشتم را با شما اساتید گرامی درمیان بگذارم:
من برنامه نویسی VB رو به صورت تجربی یاد گرفتم پس اگه سوالاتم ساده و بی محتوا هستن به بزرگواری خودتون عفو کنید
من تا می تونستم تو تاپیک های قبلی جستجو کردم اما نتونستم جواب سوالامو پیدا کنم این چند تا سوال هم پیرو یه برنامه هست که خدمتتون عرض میکنم:
مشکل اول: من یه بانک(مثلا اکسس) دارم که می خوام اونو تو Vb داخل یه DataGrid لود کنم
من از این کد استفاده می کنم:
Dim cnn As New ADODB.Connection
Dim cnn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ra As New ADODB.Recordset
===============================================
Private Sub CNN.TO.ORCL_Click()
Adodc1.CursorLocation = adUseClient
Adodc1.CursorType = adOpenDynamic
Adodc1.MaxRecords = 1
Adodc1.ConnectionString = "Provider=MSDAORA.1;Password=test;UserID=test;Data Source=GHADIM;Persist Security Info=True"
Adodc1.RecordSource = "select * from GHADIM"
Adodc1.Refresh
EndSub
----------------------------------------------
Private SubCNN.TO.ACCESS_Click()
Adodc2.CursorLocation = adUseClient
Adodc2.CursorType = adOpenDynamic
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CMD1.FileName & ";Mode=ReadWrite;Persist Security Info=False"
Adodc2.RecordSource = "select * From DOS Where FAMCOD<>'send'"
Adodc2.Refresh
End Sub
تو این کد من به یه دیتا بیس اکسس و اوراکل وصل شدم اما مشکلم تو دیتا بیس اکسسه من می خوام با دکمه Browse بتونم دیتا بیس رو انتخاب کنم (که این کارو کردم) اما توی کد نام جدول موجود در دیتا بیسم ثابته(DOS) پس عملا نمی تونم به دیتا بیسی که اسم جدولشو نمی دونم کانکت بشم. لطف کنین در رابطه با گرفتن نام جدول از دیتا بیس کمکم کنین.
مشکل دومم تو لود کردن دیتا بیس با رکورد های بالا تو VB هست دیتا بیسی که می گم رکورد های بالای 160 میلیون رو تو خودش جا داده من الان دارم برای این کار از ADODC و DataGrid استفاده می کنم
برای اینکه اوراکل رو راحت بتونم لود کنم از این کد استفاده کردم:
Adodc1.MaxRecords = 1 و به راحتی هم به اوراکل وصل میشم (1ثانیه) اما تو ACCESS این کد جواب نمیده و میره کل دیتا بیس رو تو DataGrid بارگزاری می کنه که اولا وقت زیادی می گیره و دوما وقتی که اومدم یه دیتا بیس 5 میلیون رکوردی رو بارگزاری کنم پیغام Out Of Memory رو مرحمت فرمودند!!!
شما برای اینکه همچین فایل های حجیمی را داخل دیتا VB لود کنید پیشنهاد و راهکاری برای بنده دارین؟؟؟
و مشکل سومم:
من دارم این دیتا بیس های اکسس رو سطر به سطر تو اوراکل میریزم آخه نتونستم از دستور Insert تو SQL برای تزریق دو تا دیتابیس که از جنس های مختلف (ACCESS و ORACLE) هستند استفاده کنم و برای همین وقت زیادی رو تو تزریق می گیره و مشکل دیگه ای هم که داره اگه این وسط اروری بده باید از دوباره دیتابیس رو شروع به تزریق کرد پس تحمل اطلاعات تکراری موجود در دیتا بیس رو هم باید داشت!!!
برای این مشکل هم راهکاری پیدا کردم که اومدم و هر کدوم از سطر ها رو که ارسال میشد مقدار SEND رو تو یکی از فیلد هاش که بلا استفاده بود می نوشتم اما با این کار سرعت تزریق به اوراکل از 60 رکورد در ثانیه به 20 رکورد کاهش پیدا کرد
و مشکل چهارم: من برای تزریق رکود به رکود از اکسس به اوراکل از یه تایمر استفاده می کنم که خوبم جواب میده اما سرعتش از یه حلقه پایین تره اما وقتی که از حلقه For برای تزریق استفاده می کنم برنامه از لحاظ گرافیکی هنگ می کنه (اما در حال تزریق اطلاعات به دیتا بیس اوراکل هست) که این خودش مقدار اشغال CPU , RAM رو تو سرورم خیلی خیلی بالا برده. آیا برای این مشکل هم راه حلی دارین؟؟؟
با تشکر از دوستان محترم در بخش VB منتظر جواب های شما دوستان عزیر هستم.
من برنامه نویسی VB رو به صورت تجربی یاد گرفتم پس اگه سوالاتم ساده و بی محتوا هستن به بزرگواری خودتون عفو کنید
من تا می تونستم تو تاپیک های قبلی جستجو کردم اما نتونستم جواب سوالامو پیدا کنم این چند تا سوال هم پیرو یه برنامه هست که خدمتتون عرض میکنم:
مشکل اول: من یه بانک(مثلا اکسس) دارم که می خوام اونو تو Vb داخل یه DataGrid لود کنم
من از این کد استفاده می کنم:
Dim cnn As New ADODB.Connection
Dim cnn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ra As New ADODB.Recordset
===============================================
Private Sub CNN.TO.ORCL_Click()
Adodc1.CursorLocation = adUseClient
Adodc1.CursorType = adOpenDynamic
Adodc1.MaxRecords = 1
Adodc1.ConnectionString = "Provider=MSDAORA.1;Password=test;UserID=test;Data Source=GHADIM;Persist Security Info=True"
Adodc1.RecordSource = "select * from GHADIM"
Adodc1.Refresh
EndSub
----------------------------------------------
Private SubCNN.TO.ACCESS_Click()
Adodc2.CursorLocation = adUseClient
Adodc2.CursorType = adOpenDynamic
Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CMD1.FileName & ";Mode=ReadWrite;Persist Security Info=False"
Adodc2.RecordSource = "select * From DOS Where FAMCOD<>'send'"
Adodc2.Refresh
End Sub
تو این کد من به یه دیتا بیس اکسس و اوراکل وصل شدم اما مشکلم تو دیتا بیس اکسسه من می خوام با دکمه Browse بتونم دیتا بیس رو انتخاب کنم (که این کارو کردم) اما توی کد نام جدول موجود در دیتا بیسم ثابته(DOS) پس عملا نمی تونم به دیتا بیسی که اسم جدولشو نمی دونم کانکت بشم. لطف کنین در رابطه با گرفتن نام جدول از دیتا بیس کمکم کنین.
مشکل دومم تو لود کردن دیتا بیس با رکورد های بالا تو VB هست دیتا بیسی که می گم رکورد های بالای 160 میلیون رو تو خودش جا داده من الان دارم برای این کار از ADODC و DataGrid استفاده می کنم
برای اینکه اوراکل رو راحت بتونم لود کنم از این کد استفاده کردم:
Adodc1.MaxRecords = 1 و به راحتی هم به اوراکل وصل میشم (1ثانیه) اما تو ACCESS این کد جواب نمیده و میره کل دیتا بیس رو تو DataGrid بارگزاری می کنه که اولا وقت زیادی می گیره و دوما وقتی که اومدم یه دیتا بیس 5 میلیون رکوردی رو بارگزاری کنم پیغام Out Of Memory رو مرحمت فرمودند!!!
شما برای اینکه همچین فایل های حجیمی را داخل دیتا VB لود کنید پیشنهاد و راهکاری برای بنده دارین؟؟؟
و مشکل سومم:
من دارم این دیتا بیس های اکسس رو سطر به سطر تو اوراکل میریزم آخه نتونستم از دستور Insert تو SQL برای تزریق دو تا دیتابیس که از جنس های مختلف (ACCESS و ORACLE) هستند استفاده کنم و برای همین وقت زیادی رو تو تزریق می گیره و مشکل دیگه ای هم که داره اگه این وسط اروری بده باید از دوباره دیتابیس رو شروع به تزریق کرد پس تحمل اطلاعات تکراری موجود در دیتا بیس رو هم باید داشت!!!
برای این مشکل هم راهکاری پیدا کردم که اومدم و هر کدوم از سطر ها رو که ارسال میشد مقدار SEND رو تو یکی از فیلد هاش که بلا استفاده بود می نوشتم اما با این کار سرعت تزریق به اوراکل از 60 رکورد در ثانیه به 20 رکورد کاهش پیدا کرد
و مشکل چهارم: من برای تزریق رکود به رکود از اکسس به اوراکل از یه تایمر استفاده می کنم که خوبم جواب میده اما سرعتش از یه حلقه پایین تره اما وقتی که از حلقه For برای تزریق استفاده می کنم برنامه از لحاظ گرافیکی هنگ می کنه (اما در حال تزریق اطلاعات به دیتا بیس اوراکل هست) که این خودش مقدار اشغال CPU , RAM رو تو سرورم خیلی خیلی بالا برده. آیا برای این مشکل هم راه حلی دارین؟؟؟
با تشکر از دوستان محترم در بخش VB منتظر جواب های شما دوستان عزیر هستم.