السلام عليكم ورحمة الله وبركاته
اخي الكريم سؤالك ينقصه المزيد من المعلومات ليتم معرفة المشكلة
1- تأكد من ان جهاز العميل على نسخة اكسس اصدار مثل الاصدار الذي في جهازك او اعلى
2- تأكد من جملة الاتصال وعنوان قاعدة البيانات على جهاز العميل بحيث يكون المسار مطابق لما هو في جملة الاتصال
3 - ماهي الملفات التي نقلتها وطريقة انشاء الست اب
4 - ماهي رسالة الخطأ التي ظهرت
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
1- تأكد من ان جهاز العميل على نسخة اكسس اصدار مثل الاصدار الذي في جهازك او اعلى
تم التاكد من جهاز والجهاز الاخر لا
هل يمكن اضافة ملفات لتشغيل الاكسس بدون برنامج اكسس على الجهاز ؟
2- تأكد من جملة الاتصال وعنوان قاعدة البيانات على جهاز العميل بحيث يكون المسار مطابق لما هو في جملة الاتصال جملة الاتصال مطابقة لانها عن طريق باث في اعدادات البرنامج وكذلك هي في نفس مجلد البرنامج وتم التاكد عدة مرات من عملها
3 - ماهي الملفات التي نقلتها وطريقة انشاء الست اب
السيتب عن طريق setup project من نفس فيجوال ستوديو
المgفات المرفقه في الصورة في المرفقات وهي جميع ملفات مجلد BIN
قم بتجربة البرنامج وعند الضغط على زر تحديث البيانات بحيث يجلبها من ملف اكسل تظهر رسالة ان قاعدة البيانات مفتوحة ولايكمل البرنامج وانت تقول انه يعمل بشكل طبيعي ؟؟؟؟
كانت المشكلة في اغلاق قاعدة البيانات قمت بالتعديل على جزئيات الفتح والاغلاق كلها وتم عمل البرنامج بنجاح
اليك الكود كاملا انظر الى اماكن التعديل وقارنها مع كودك الاصلي
Dim conn2 As New OleDbConnection("PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE=" & My.Settings.db & ";")
Dim conn As New OleDbConnection("PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE=" & My.Settings.path & "; EXTENDED PROPERTIES=EXCEL 12.0;")
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
SkinCrafter1.LoadSkinFromFile("skins\Arcus.skf")
SkinCrafter1.ApplySkin()
If My.Settings.db = "" Then
MsgBox(" لا يوجد قاعدة بيانات متصلة ", MsgBoxStyle.MsgBoxRight & MsgBoxStyle.Information, "مدراء المدارس")
Exit Sub
End If
If IO.File.Exists(My.Settings.db) Then
If conn2.State = ConnectionState.Open Then conn2.Close()
conn2.Open()
Dim cmd As New OleDbCommand("select * from Leaders where SchName is not null ", conn2)
Dim dt As New DataTable
dt.Clear()
dt.Load(cmd.ExecuteReader)
If dt.Rows.Count > 0 Then
DataGridView2.DataSource = dt
For s As Integer = 0 To dt.Rows.Count - 1
ComboBox1.Items.Add(dt.Rows(s).Item("SchName"))
Next
Label7.Text = My.Settings.mdarsCount
Label15.Text = My.Settings.edart
Else
My.Settings.edart = ""
My.Settings.mdarsCount = ""
End If
conn2.Close()
Else
MsgBox(" مسار قاعدة البيانات خاطيء ")
Button2_Click(Nothing, Nothing)
End If
Catch ex As Exception
'MsgBox(ex.Message)
Exit Sub
End Try
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
If conn2.State = ConnectionState.Open Then conn2.Close()
conn2.Open()
Dim cmd As New OleDbCommand("select * from Leaders where SchName=@SchName", conn2)
cmd.Parameters.Add("SchName", OleDbType.VarChar).Value = ComboBox1.Text
Dim dt As New DataTable
dt.Clear()
dt.Load(cmd.ExecuteReader)
Dim h As Integer = ComboBox1.SelectedIndex
DataGridView2.Rows(h).Selected = True
DataGridView2.FirstDisplayedScrollingRowIndex = DataGridView2.Rows(h).Index
DataGridView2.Rows.IndexOf(DataGridView2.CurrentRow)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
conn.Close()
conn2.Close()
'conn3.Close()
Me.Close()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Try
ofd.Filter = "Excel Files(*.xlsx)|*.xlsx|All files (*.*)|*.*"
If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
'My.Settings.url = ofd.FileName
If ofd.SafeFileName = "LI_HierarchySchoolAdmins.xlsx" Then
Dim conn3 As New OleDbConnection("PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE=" & ofd.FileName & "; EXTENDED PROPERTIES=EXCEL 12.0;")
If conn3.State = ConnectionState.Open Then conn3.Close()
conn3.Open()
Label16.Text = "فضلا انتظر .."
Dim cmd As New OleDbCommand("select * from [LI_HierarchySchoolAdmins$] where f14 is not null", conn3)
Dim dt As New DataTable
dt.Clear()
dt.Load(cmd.ExecuteReader)
conn3.Close()
For f As Integer = 1 To dt.Rows.Count - 1
If dt.Rows(f).Item("f15").ToString = "" Then
dt.Rows(f).Item("f15") = dt.Rows(f - 1).Item("f15").ToString
Else
Dim ms As String = dt.Rows(f).Item("f15").ToString
End If
Next
DataGridView1.DataSource = dt
DataGridView1.Update()
For s As Integer = 1 To dt.Rows.Count - 1
ComboBox1.Items.Add(dt.Rows(s).Item("f13"))
Next
'===========نسخ قاعدة البيانات الجديدة الى القاعدة في المسار الصحيح ======
Dim cmd3 As New OleDbCommand("DELETE * from Leaders", conn2)
If conn2.State = ConnectionState.Open Then conn2.Close()
conn2.Open()
cmd3.ExecuteNonQuery()
conn2.Close()
Timer1.Enabled = True
Dim cont As Integer = dt.Rows.Count - 1
ProgressBar1.Maximum = cont
ProgressBar1.Minimum = 0
ProgressBar1.Value = 0
If conn2.State = ConnectionState.Open Then conn2.Close()
conn2.Open()
For i = 1 To dt.Rows.Count - 1
Dim cmd2 As New OleDbCommand("INSERT INTO Leaders(SchWz,SchName,leaderName,mobile,tel,mktb) values(@SchWz,@SchName,@leaderName,@mobile,@tel,@mktb)", conn2)
cmd2.Parameters.AddWithValue("@SchWz", DataGridView1.Rows(i).Cells("f14").Value)
cmd2.Parameters.AddWithValue("@SchName", DataGridView1.Rows(i).Cells("f13").Value)
cmd2.Parameters.AddWithValue("@leaderName", DataGridView1.Rows(i).Cells("f5").Value)
cmd2.Parameters.AddWithValue("@mobile", DataGridView1.Rows(i).Cells("f4").Value)
cmd2.Parameters.AddWithValue("@tel", DataGridView1.Rows(i).Cells("f3").Value)
cmd2.Parameters.AddWithValue("@mktb", DataGridView1.Rows(i).Cells("f15").Value)
ProgressBar1.Value = i
ProgressBar1.Value = i - 1
Label16.Text = PROC & " %"
Next
conn2.Close()
My.Settings.edart = dt.Rows(1).Item("f18").ToString
My.Settings.mdarsCount = dt.Rows.Count - 1
Label15.Text = My.Settings.edart
Label7.Text = My.Settings.mdarsCount
'--------------------------------
Dim cmd5 As New OleDbCommand("select * from Leaders where SchName is not null ", conn2)
If conn2.State = ConnectionState.Open Then conn2.Close()
conn2.Open()
Dim dt5 As New DataTable
dt5.Clear()
dt5.Load(cmd5.ExecuteReader)
DataGridView2.DataSource = dt5
DataGridView2.Refresh()
For s As Integer = 0 To dt5.Rows.Count - 1
ComboBox1.Items.Add(dt5.Rows(s).Item("SchName"))
Next
Label7.Text = My.Settings.mdarsCount
Label15.Text = My.Settings.edart
conn2.Close()
'----------------------------------
MsgBox("تم تحديث البيانات بنجاح", MsgBoxStyle.OkOnly & MsgBoxStyle.Information, "تنبيه")
Label16.Text = ""
'=================
Else
MsgBox(" قاعدة البيانات غير متطابقة ", MsgBoxStyle.OkOnly & MsgBoxStyle.Information, "مدراء المدارس")
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
'Exit Sub
Finally
conn2.Close()
End Try
End Sub
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
conn.Close()
End Sub
Private Sub DataGridView2_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView2.CellMouseClick
Dim i As Integer = DataGridView2.Rows.IndexOf(DataGridView2.CurrentRow)
Label1.Text = DataGridView2.Rows(i).Cells("SchWz").Value.ToString
Label2.Text = DataGridView2.Rows(i).Cells("SchName").Value.ToString
Label3.Text = DataGridView2.Rows(i).Cells("leaderName").Value.ToString
Label4.Text = DataGridView2.Rows(i).Cells("mobile").Value.ToString
Label5.Text = DataGridView2.Rows(i).Cells("tel").Value.ToString
Label14.Text = DataGridView2.Rows(i).Cells("mktb").Value.ToString
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If ProgressBar1.Maximum Then
Timer1.Enabled = False
ProgressBar1.Value = 0
End If
End Sub
End Class
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
السلام عليكم ورحمة الله وبركاته
اخي الكريم
اعتقد والله اعلم ان ملفات تجميل الفورم والادوات هي السبب (Skincrafter)
او ربما ان مشروعك بنظام x64 بت والجهاز الذي تريد تشغيل البرنامج عليه 32 بت (تأكد من ذلك) ام كان كذلك اذهب الى خصائص المشروع واختر Compile ومن نفس النافذة Target CPU اختر AnyCPU ليعمل البرنامج على كلا المنصتين 64 و32
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
اخي الكريم ابراهيم
الف شكر على اهتمامك اولا واخيرا
بالنسبة للخصائص محطوط فيه AnyCPU هذي بديهيه
خليني اسأل السؤال بطريقة ثانية يمكن تكون هي السبب او جزء من الحل لبعض الاجهزة
اذا عملت برنامج في الفيجوال فيه قاعدة بيانات اكسس ويستخدم ملف اكسل ونقلته على جهاز اخر مافيه فيجوال ستوديو او اكسل او اكسس
ماهي الملفات التي احتاج نقلها معه حتى يتم تشغيله على الجهاز الاخر دون مشاكل
18-09-21, 04:13 PM (آخر تعديل لهذه المشاركة : 18-09-21, 04:16 PM {2} بواسطة love_hell.)
مش شرط يكون على جهاز العميل اكسيس ممكن تعمل تنصيب ل Access Database Engine تجيبه من مايكرو سوفت
اما بالنسبة ل الاكسيل فاعتقد انه لازم يكون موجود على جهاز العميل
بس انا ملاحظ ان فيه ملفين مفقودين من مكتبات البرنامج . راجع انهم موجودين ضمن ملفات البرنامج