تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف يُمكن أدخال أداة ال Progress Bar للتزامن مع نسخ قاعدة بيانات الأكسس؟
#1
بسم الله الرحمن الرحيم



إخواني الكِرام هذا كود نسخ قاعدة البيانات :
PHP كود :
       If My.Settings.BupDB Now.Date Then
            If con
.State ConnectionState.Open Then con.Close()
 
           If (Not System.IO.Directory.Exists("D:\Backup\")) Then IO.Directory.CreateDirectory("D:\Backup\")
            My.Computer.FileSystem.CopyFile(Application.StartupPath & "
/A18.accdb", "D:\Backup\BupDB-" & Now.Date.ToString("dd-MM-yyyy") & "A18.accdb", True)
        End If 

كيف يُمكن إدخال أداة ال Progress Bar كي تتزامن مع عملية نسخ قاعدة البيانات، لأني استطعت إدراجها ولكن مجرد شكل وليس بالتزامن، وجزاكم الله خيراً
الرد
تم الشكر بواسطة:
#2
جرب هذا

كود :
My.Computer.FileSystem.CopyFile(Application.StartupPath & "/A18.accdb", "D:\Backup\BupDB-" & Now.Date.ToString("dd-MM-yyyy") & "A18.accdb", FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)
الرد
تم الشكر بواسطة: Hazem1 , جاسم عبد
#3
(04-10-18, 09:47 PM)rnmr كتب : جرب هذا

كود :
My.Computer.FileSystem.CopyFile(Application.StartupPath & "/A18.accdb", "D:\Backup\BupDB-" & Now.Date.ToString("dd-MM-yyyy") & "A18.accdb", FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)

أخي الكريم rnmr هل ممكن توضح لي فائدة الكود في عملية الارتباط بأداة ال ProgressBar لأني أشعر أن وظيفته في إطار عملية النسخ.
الرد
تم الشكر بواسطة: elgokr
#4
وظيفة الكود يظهر نافذة النسخ أو النقل الخاصة بالنظام والذي هو يمتلك تزامن عملية النقل أو النسخ.

جرب هذا


https://stackoverflow.com/a/34939234
كود :
Dim [sourceFile] As String = Application.StartupPath & "/A18.accdb"
Dim [targetFile] As String = "D:\Backup\BupDB-" & Now.Date.ToString("dd-MM-yyyy") & "A18.accdb"

CopyFileWithProgress([sourceFile], [targetFile], Me.ProgressBar1)
كود :
Private Sub CopyFileWithProgress([sourceFile] As String, [targetFile] As String, [progress] As ProgressBar)
   'Create the file stream for the source file
   Dim streamRead As New System.IO.FileStream([sourceFile], System.IO.FileMode.Open)
   'Create the file stream for the destination file
   Dim streamWrite As New System.IO.FileStream([targetFile], System.IO.FileMode.Create)
   'Determine the size in bytes of the source file (-1 as our position starts at 0)
   Dim lngLen As Long = streamRead.Length - 1
   Dim byteBuffer(1048576) As Byte   'our stream buffer
   Dim intBytesRead As Integer    'number of bytes read

   While streamRead.Position < lngLen    'keep streaming until EOF
       'Read from the Source
       intBytesRead = (streamRead.Read(byteBuffer, 0, 1048576))
       'Write to the Target
       streamWrite.Write(byteBuffer, 0, intBytesRead)
       'Display the progress
       [progress].Value = CInt(streamRead.Position / lngLen * 100)
       Application.DoEvents()    'do it
   End While

   'Clean up
   streamWrite.Flush()
   streamWrite.Close()
   streamRead.Close()
End Sub
الرد
تم الشكر بواسطة: Hazem1 , asemshahen5 , elgokr , princelovelorn , princelovelorn
#5
(04-10-18, 10:01 PM)rnmr كتب : وظيفة الكود يظهر نافذة النسخ أو النقل الخاصة بالنظام والذي هو يمتلك تزامن عملية النقل أو النسخ.

وماذا تفرق معك طالما ترى عملية النسخ أو النقل أمامك.

أخي الكريم [b]rnmr 
، عفواً لم أقصد أضايقك بالسؤال ولكن وددت أفهم الفائدة منه، وجزاك الله خيراً، المقصد أخي الفاضل هو استخدام أداة ال ProgressBar بحيث تظهر العد من 1 إلى 100 ولكن بشكلٍ حقيقي يتزامن فعلياً مع عملية النسخ وفقاً لحجم قاعدة البيانات، وليس بشكل وهمي، هذه الأكواد المُستخدمة ولكنها لا تتزامن مع عملية النسخ بشكل حقيقي
[/b]

زر النسخ :


PHP كود :
If My.Settings.BupDB Now.Date Then
                If con
.State ConnectionState.Open Then con.Close()
 
               If (Not System.IO.Directory.Exists("D:\Backup\")) Then IO.Directory.CreateDirectory("D:\Backup\")
                My.Computer.FileSystem.CopyFile(Application.StartupPath & "
/A18.accdb", "D:\Backup\BupDB-" & Now.Date.ToString("dd-MM-yyyy") & "A18.accdb", FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)
                Timer1.Enabled = True 
 
وهذا في أداة Timer :
PHP كود :
Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Timer1.Tick
        If ProgressBar1
.Value <= ProgressBar1.Maximum 1 Then
            ProgressBar1
.Value += 1
        End 
If
 
   End Sub 
الرد
تم الشكر بواسطة: rnmr , rnmr
#6
جرب الطريقة التالية
كود :
   Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
       Try
           If My.Settings.BupDB < Now.Date Then
               If con.State = ConnectionState.Open Then con.Close()
               If (Not System.IO.Directory.Exists("D:\Backup\")) Then IO.Directory.CreateDirectory("D:\Backup\")
               My.Computer.FileSystem.CopyFile(Application.StartupPath & "/A18.accdb", "D:\Backup\BupDB-" & Now.Date.ToString("dd-MM-yyyy") & "A18.accdb", True)
           End If

           PBR()

       Catch ex As Exception
           MessageBox.Show(ex.Message, "رسالة الخطأ")
       End Try

   End Sub
   Sub PBR()
       With ProgressBar1
           .Minimum = 1
           .Maximum = 100000
           .Value = 1
           .Step = 1
           For i As Integer = .Minimum To .Maximum
               .PerformStep()
           Next i
       End With
       MsgBox("تمت العملية بنجاح")
   End Sub
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 
الرد
تم الشكر بواسطة: rnmr , Hazem1 , elgokr
#7
(04-10-18, 10:01 PM)rnmr كتب : وظيفة الكود يظهر نافذة النسخ أو النقل الخاصة بالنظام والذي هو يمتلك تزامن عملية النقل أو النسخ.

جرب هذا


https://stackoverflow.com/a/34939234
كود :
Dim [sourceFile] As String = Application.StartupPath & "/A18.accdb"
Dim [targetFile] As String = "D:\Backup\BupDB-" & Now.Date.ToString("dd-MM-yyyy") & "A18.accdb"

CopyFileWithProgress([sourceFile], [targetFile], Me.ProgressBar1)
كود :
Private Sub CopyFileWithProgress([sourceFile] As String, [targetFile] As String, [progress] As ProgressBar)
   'Create the file stream for the source file
   Dim streamRead As New System.IO.FileStream([sourceFile], System.IO.FileMode.Open)
   'Create the file stream for the destination file
   Dim streamWrite As New System.IO.FileStream([targetFile], System.IO.FileMode.Create)
   'Determine the size in bytes of the source file (-1 as our position starts at 0)
   Dim lngLen As Long = streamRead.Length - 1
   Dim byteBuffer(1048576) As Byte   'our stream buffer
   Dim intBytesRead As Integer    'number of bytes read

   While streamRead.Position < lngLen    'keep streaming until EOF
       'Read from the Source
       intBytesRead = (streamRead.Read(byteBuffer, 0, 1048576))
       'Write to the Target
       streamWrite.Write(byteBuffer, 0, intBytesRead)
       'Display the progress
       [progress].Value = CInt(streamRead.Position / lngLen * 100)
       Application.DoEvents()    'do it
   End While

   'Clean up
   streamWrite.Flush()
   streamWrite.Close()
   streamRead.Close()
End Sub
جزاك الله خيراً أخي [b]rnmr، الكود يعمل بشكل صحيح، سامحني أتعبتك معي، يسر الله لك كل أمر ورزقك الهُدى والتُقى والعفاف والغنى.
[/b]

(04-10-18, 10:49 PM)princelovelorn كتب : جرب الطريقة التالية
كود :
   Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
       Try
           If My.Settings.BupDB < Now.Date Then
               If con.State = ConnectionState.Open Then con.Close()
               If (Not System.IO.Directory.Exists("D:\Backup\")) Then IO.Directory.CreateDirectory("D:\Backup\")
               My.Computer.FileSystem.CopyFile(Application.StartupPath & "/A18.accdb", "D:\Backup\BupDB-" & Now.Date.ToString("dd-MM-yyyy") & "A18.accdb", True)
           End If

           PBR()

       Catch ex As Exception
           MessageBox.Show(ex.Message, "رسالة الخطأ")
       End Try

   End Sub
   Sub PBR()
       With ProgressBar1
           .Minimum = 1
           .Maximum = 100000
           .Value = 1
           .Step = 1
           For i As Integer = .Minimum To .Maximum
               .PerformStep()
           Next i
       End With
       MsgBox("تمت العملية بنجاح")
   End Sub

مشكور أخي الغالي princelovelorn الكود يعمل مع فارق السرعة Wink مع الأخ الكريم [b][b]rnmr ، أسعدكما الله ورزقكما الجنة وأغناكما من فضله، و جزى الله خيراً أخانا elgokr ، فقد ساعدني بكود النسخ وحفزني على تطويره، (اسأل الله أن يجمعنا في الجنة إخوانًا على سُرُرٍ مُتقابلين ).[/b][/b]
الرد
تم الشكر بواسطة: elgokr , princelovelorn , ابو روضة


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة فى اضافة حقول جديدة فى قاعدة البيانات و ربطها بالفيجوال استوديو nabil.1710 1 31 منذ 5 ساعة مضت
آخر رد: nabil.1710
  سؤال :- فى كيغية ادراج بيانات فى الداتا جريد فيو احمد خطاب 1 61 اليوم, 02:54 AM
آخر رد: EYADISMAIL
  كيف ابحث داخل قاعدة البيانات احمد خطاب 2 63 أمس, 01:51 AM
آخر رد: اسامه الهرماوي
  البحث عن يوم في قاعدة البيانات atefkhalf2004 2 68 16-10-18, 09:18 PM
آخر رد: WAEL ABED
  نقل بيانات من فورم طفل الى فورم اساسي Rabeea Qbaha 4 70 16-10-18, 05:52 PM
آخر رد: Rabeea Qbaha
  مشكله فى حفظ قاعده بيانات اكسس فى مشروع فيجوال بيزك مع تلك القاعده خالد كامل1 2 42 16-10-18, 08:34 AM
آخر رد: خالد كامل1
  اظهار اكثر من سطر في أداة NotifyIcon المتألق9 5 103 14-10-18, 10:22 PM
آخر رد: عبد العزيز البسكري
  لماذا تظهر علامة خطأ على قاعدة البيانات دائماً ؟ Hazem1 0 54 12-10-18, 02:17 PM
آخر رد: Hazem1
  [SQL] اريد buckup لقاعدة بيانات 2008 sabrizinoubi 0 54 09-10-18, 04:52 PM
آخر رد: sabrizinoubi
  هل يُمكن عمل بحث بحيث يظهر الناتج في غير الداتاجريدفيو أو في مثيلٍ لها؟ Hazem1 3 84 09-10-18, 07:48 AM
آخر رد: عبدالله الدوسري

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم