تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] عمل اتتاتش للداتا بيز عند فتح البرنامج اول مرة عل جهاز العميل
#4
اضافة جميلة اخى mero5000
وستعم الفائدة على الكثير باذن الله

فكل التحية لك
وتمنياتى لك التوفيق

(01-09-18, 12:43 AM)princelovelorn كتب :
وعليكم السلام ورحمة الله وبركاته

جزاك الله خيرا وبارك فيك أخي الكريم

لقد طبقت الشرح كاملا مثل ما تفضلت به

وقمت بتعديل واحد فقط وهو sqlexpress  الى sqlnext  لان  هدا اسم السيرفر لدي 
وهذا طبعا مؤقتا لحين التعديل عليه لاحقا
وهذا هو الكود كاملا
كود :
Public Class Form1

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       If GETATTACHDATABASENAME() = False Then
           ATTACHDATABASENAME("database99", Application.StartupPath & "\db\database99.MDF", Application.StartupPath & "\db\database99_log.LDF")
       End If
   End Sub
   Public Shared Function GETATTACHDATABASENAME() As Boolean
       On Error Resume Next
       Dim DS As New DataSet
       Dim SqlConnection1 As SqlClient.SqlConnection = New SqlClient.SqlConnection("Data Source=" + My.Computer.Name & "\SQLnext" + ";Initial Catalog=tempdb;Integrated Security=SSPI;")
       Dim str As String = "Select DISTINCT name from master.dbo.sysdatabases where name Like 'database99' and has_dbaccess(Name) = 1 "
       Dim ADP As SqlClient.SqlDataAdapter
       ADP = New SqlClient.SqlDataAdapter(str, SqlConnection1)
       DS.Clear()
       ADP.Fill(DS)
       Dim i As Integer
       If DS.Tables(0).Rows.Count = 0 Then
           GETATTACHDATABASENAME = False
           MessageBox.Show(" قاعدة البيانات  'قاعدة بيانات البرنامج'" & "غير متصلة بالسرفر جارى عمل الاتصال", My.Computer.Name, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading)
       Else
           GETATTACHDATABASENAME = True
       End If
       ADP.Dispose()
       SqlConnection1.Dispose()
   End Function


   Public Shared Sub ATTACHDATABASENAME(ByVal MYDBNAME As String, ByVal f1lepathprimary As String, ByVal f1lepathlog As String)
       Try
           Dim SqlConnection1 As SqlClient.SqlConnection = New SqlClient.SqlConnection("Data Source=" + My.Computer.Name & "\SQLnext" + ";Initial Catalog=tempdb;Integrated Security=SSPI;")
           Dim CMD As SqlClient.SqlCommand = New SqlClient.SqlCommand
           CMD.CommandType = CommandType.Text
           CMD.Connection = SqlConnection1
           If SqlConnection1.State = ConnectionState.Open Then SqlConnection1.Close()
           SqlConnection1.Open()
           CMD.CommandText = "sp_attach_db " & MYDBNAME & ",'" & f1lepathprimary & "'" & ",'" & f1lepathlog & "'"
           ' OR CMD.CommandText = "CREATE DATABASE " & MYDBNAME & " ON (FILENAME = '" & f1lepath & "')FOR ATTACH"
           CMD.ExecuteNonQuery()
           SqlConnection1.Dispose()
           MessageBox.Show("تم انشاء اتصال  قاعدة البيانات  بالسرفر ", "ATTCH DATABASE", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.RtlReading)
       Catch ex As Exception
           Dim result As Integer
           result = MessageBox.Show("فشل البرنامج فى انشاء اتصال  بقاعدة البيانات  بالسرفر", "ATTCH DATABASE", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.RtlReading)
           MessageBox.Show(ex.Message)
       End Try
   End Sub
End Class

والنتيجة رسالة خطأ التالية عند محاولة التشغيل من درايف ال c


وهذة عندما حاولت التشغيل من خلال داريف أخر
ملاحظات
قاعدة البيانات فارغة ليس بها اي جدول
تم إنشائها من نفس السيرفر
نسخة ال sql لدي هي   sqlserver2008 r2
نسخة الفيجوال vb.net 2010
نسخة الويندوز windows 10 64 bit


مرحباً اخى الفاضل princelovelorn

لحل المشكلة تعال على ملفات قاعدة البيانات وطبق مثل الفيديو التالى

لكن لا تقوم بكتابة اسم المستخدم كما هو ذكر فى الفيديو
الاسم الصح لذلك هو EVERYONE وعند الكتابة يمكنك فقط كتابة eve والضغط على Check Name

يمكنك فعل ذلك على الملفات لديك بجهازك قبل وضعها فى السورس البرنامج
حتى اذا تغيير من جهاز لاخر سيكون مطبع على جميع اسماء المستخدمين

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: princelovelorn , mero5000 , baha , baha


الردود في هذا الموضوع
RE: عمل اتتاتش للداتا بيز عند فتح البرنامج اول مرة عل جهاز العميل - بواسطة elgokr - 01-09-18, 03:50 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مثال] طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل princelovelorn 9 9,466 26-03-23, 04:24 PM
آخر رد: sanyor77
  [مقال] مشاركة البرنامج على أكثر من جهاز (قاعدة بيانات اكسيس) mr_hso 0 1,374 06-01-23, 05:21 AM
آخر رد: mr_hso

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


يقوم بقرائة الموضوع: