مشكلة في نقل البرنامج الى جهاز اخر - سيف الشمال - 06-09-21
السلام عليكم
عملت برنامج وربطته بقاعدة بيانات اكسس
تحديث قاعدة البيانات ياخذها من اكسس من خلال اختيار القاعدة ثم تحديث ويفرغ البياات في الاكسس
كل شي ماشي كويس على جهازي
لكن لما انقله على جهاز من خلال السيت اب لايعمل
كذلك نقلت ملف BIN على جهاز ثاني ولا يعمل
حدث خطا اثناء تشغيل البرنامج ويغلق
ماهي الملفات اللي احتاج ارفاقها مع البرنامج نفسه ويتم تشغيله على اي جهاز
RE: مشكلة في نقل البرنامج الى جهاز اخر - ابراهيم ايبو - 06-09-21
السلام عليكم ورحمة الله وبركاته
اخي الكريم سؤالك ينقصه المزيد من المعلومات ليتم معرفة المشكلة
1- تأكد من ان جهاز العميل على نسخة اكسس اصدار مثل الاصدار الذي في جهازك او اعلى
2- تأكد من جملة الاتصال وعنوان قاعدة البيانات على جهاز العميل بحيث يكون المسار مطابق لما هو في جملة الاتصال
3 - ماهي الملفات التي نقلتها وطريقة انشاء الست اب
4 - ماهي رسالة الخطأ التي ظهرت
RE: مشكلة في نقل البرنامج الى جهاز اخر - سيف الشمال - 07-09-21
1- تأكد من ان جهاز العميل على نسخة اكسس اصدار مثل الاصدار الذي في جهازك او اعلى
تم التاكد من جهاز والجهاز الاخر لا
هل يمكن اضافة ملفات لتشغيل الاكسس بدون برنامج اكسس على الجهاز ؟
2- تأكد من جملة الاتصال وعنوان قاعدة البيانات على جهاز العميل بحيث يكون المسار مطابق لما هو في جملة الاتصال
جملة الاتصال مطابقة لانها عن طريق باث في اعدادات البرنامج وكذلك هي في نفس مجلد البرنامج وتم التاكد عدة مرات من عملها
3 - ماهي الملفات التي نقلتها وطريقة انشاء الست اب
السيتب عن طريق setup project من نفس فيجوال ستوديو
المgفات المرفقه في الصورة في المرفقات وهي جميع ملفات مجلد BIN
4 - ماهي رسالة الخطأ التي ظهرت
لك رسالة على الخاص
RE: مشكلة في نقل البرنامج الى جهاز اخر - ابراهيم ايبو - 07-09-21
السلام عليكم ورحمة الله وبركاته
اخي الكريم
قم بتجربة البرنامج وعند الضغط على زر تحديث البيانات بحيث يجلبها من ملف اكسل تظهر رسالة ان قاعدة البيانات مفتوحة ولايكمل البرنامج وانت تقول انه يعمل بشكل طبيعي ؟؟؟؟
كانت المشكلة في اغلاق قاعدة البيانات قمت بالتعديل على جزئيات الفتح والاغلاق كلها وتم عمل البرنامج بنجاح
اليك الكود كاملا انظر الى اماكن التعديل وقارنها مع كودك الاصلي
كود :
Imports System.Data.OleDb
Imports Microsoft.Office.Interop
Public Class Form1
Dim PROC
Dim path As String
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)
Label1.Text = dt.Rows(0).Item("SchWz")
Label2.Text = dt.Rows(0).Item("SchName")
Label3.Text = dt.Rows(0).Item("leaderName")
Label4.Text = dt.Rows(0).Item("mobile").ToString
Label5.Text = dt.Rows(0).Item("tel").ToString
Label14.Text = dt.Rows(0).Item("mktb")
conn2.Close()
End Sub
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)
cmd2.ExecuteNonQuery()
PROC = Int((i / cont) * 100)
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
RE: مشكلة في نقل البرنامج الى جهاز اخر - سيف الشمال - 12-09-21
للاسف نفس المشكلة
البرنامج توقف عن العمل
المشكلة في نقص الملفات على الاجهزة الاخرى
ملفات تشغيل برامج فيجوال او اكسل او اكسس
RE: مشكلة في نقل البرنامج الى جهاز اخر - ابراهيم ايبو - 13-09-21
السلام عليكم ورحمة الله وبركاته
اخي الكريم
اعتقد والله اعلم ان ملفات تجميل الفورم والادوات هي السبب (Skincrafter)
او ربما ان مشروعك بنظام x64 بت والجهاز الذي تريد تشغيل البرنامج عليه 32 بت (تأكد من ذلك) ام كان كذلك اذهب الى خصائص المشروع واختر Compile ومن نفس النافذة Target CPU اختر AnyCPU ليعمل البرنامج على كلا المنصتين 64 و32
RE: مشكلة في نقل البرنامج الى جهاز اخر - سيف الشمال - 17-09-21
اخي الكريم ابراهيم
الف شكر على اهتمامك اولا واخيرا
بالنسبة للخصائص محطوط فيه AnyCPU هذي بديهيه
خليني اسأل السؤال بطريقة ثانية يمكن تكون هي السبب او جزء من الحل لبعض الاجهزة
اذا عملت برنامج في الفيجوال فيه قاعدة بيانات اكسس ويستخدم ملف اكسل ونقلته على جهاز اخر مافيه فيجوال ستوديو او اكسل او اكسس
ماهي الملفات التي احتاج نقلها معه حتى يتم تشغيله على الجهاز الاخر دون مشاكل
RE: مشكلة في نقل البرنامج الى جهاز اخر - love_hell - 18-09-21
مش شرط يكون على جهاز العميل اكسيس ممكن تعمل تنصيب ل Access Database Engine تجيبه من مايكرو سوفت
اما بالنسبة ل الاكسيل فاعتقد انه لازم يكون موجود على جهاز العميل
بس انا ملاحظ ان فيه ملفين مفقودين من مكتبات البرنامج . راجع انهم موجودين ضمن ملفات البرنامج
RE: مشكلة في نقل البرنامج الى جهاز اخر - سيف الشمال - 19-09-21
اي ملفين تقصد ؟
|