طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - princelovelorn - 02-09-18
السلام عليكم ورحمة الله وبركاته
أقدم لكم مثال على تنصيب قاعدة البيانات sql server
عن طريق الأسكربت
وبالطبع ستكون بجداولها كامله
وببيانات مضافة للجداول إذا أحببت
وجعل العميل يكتب أسم قاعدة البيانات
قبل أن أبدأ أود أن أوضح شئ هام
أنا مبتدأ في مجال البرمجة وينقصني الكثير والكثير من الأساسيات في البرمجة
ولكني أرغب في التعلم
وتكفى أن يكون لديك الرغبة لتحقيق ما تريده
فلا شئ أسمه مستحيل
صعب ممكن
لكن مستحيل لا
فكل شئ وكل مشكلة قد يقع بها الأنسان فيوجد لها حل
ولكن يتطلب الوصول للحل
الرغبة والأرادة والصبر والصبر والصبر
وستصل لهدفك في النهاية
وإن لم تصل ستجد نفسك قد تعلمت دروس تفيدك في مسائل أخرى
ففي كلا الحالات لن تخسر
أسف على الأطالة
ولنبدأ على بركة الله
بسم الله الرحمن الرحيم
أولا يجب عليك زيارة هذا الموضوع لتتعرف على طريقة أستخراج الأسكربت
وهو موضوع للأخ الفاضل " عبد العزيز البسكري "
الرابط
http://vb4arb.com/vb/showthread.php?tid=24869
وهذا موضوع أخر لطريقة عمل السكربت
وهو موضوع للأخ الفاضل " mero5000 "
الرابط
http://vb4arb.com/vb/showthread.php?tid=25879
ثانيا
قم بإنشاء مشروع جديد في الفيجوال بيسك
وقم بإضافة الأدوات التالية
1- ComboBox وقم يتسميتها Comb_Server_Name
2- ComboBox وقم يتسميتها Comb_Win_Auth
3- ComboBox وقم يتسميتها Comb_Av_Db
4- TextBox وقم بتسميته Txt_Login
5- TextBox وقم بتسميته Txt_Password
6- TextBox وقم بتسميته Txt_NewDataBase
7- Button وقم بتسميته Btn_Test_Con
8- Button وقم بتسميته Btn_Create_DB
وعدد 6 label توضع أمامهم كما في الصورة التالية
ثالثا نأتى لمرحلة الأكواد
الكود الأول
سننشأ موديل ونسميه " Mod_Info "
وسيكون خاص بتعريف أسماء مجلد الأتصال ويحتوي على
ملف أتصال القاعدة وملف أتصال السيرفر
وملف أسكربت القاعدة
وهو كالتالي
كود :
Module Mod_Info
Public SqlConnStr As String
Public IsOk_ As Boolean
Public Txt_Conn_Folder As String = "CONN" ' أكتب أسم الملجد الذي سيكون بجوار ملف تشغيل البرنامج وسيحتوى على ملفات الأتصال وملف أسكربت القاعدة
Public Txt_CONN As String = "CONN.txt" 'سيحتوى على نص أتصال قاعدة البيانات وستستخدمه عن طريق قراءة الملف
Public Txt_CONN_SERVER As String = "CONN_SERVER.txt" 'سيحتوى على نص أتصال السيرفر
Public SqlDB_SCR_DB_Name__ As String = "datascript.sql" ' أكتب أسم أسكربت قاعدة البيانات وضع الأسكربت بجوار ملف التشغيل للبرنامج
' سيقوم البرنامج بإنشاء المجلد والملفين السابقين في حالة عدم وجودهم وسينسخ ملف الأسكربت لداخل المجلد
' أما في حالة وجودهم فسيتجاهل أوامر الأنشاء وسيقوم بالأجراءات التي تليه
End Module
الكود الثاني
سننشأ كلاس ونسميه " CLS_Files "
وسيكون خاص بالتأكد من وجود مجلد الملفات الخاصة بالأتصال وملف أسكربت القاعدة
وهو كالتالي
كود :
Public Class CLS_Files
Public Sub check_Folder__(ByVal Folder_Name__ As String)
Dim folderExists As Boolean
folderExists = My.Computer.FileSystem.DirectoryExists(Application.StartupPath & "\" & Folder_Name__ & "")
If folderExists = False Then
My.Computer.FileSystem.CreateDirectory(Application.StartupPath & "\" & Folder_Name__ & "")
Else
End If
End Sub
Public Sub check_file__(ByVal File_Name__ As String)
Dim fileExists As Boolean
fileExists = My.Computer.FileSystem.FileExists(Application.StartupPath & "\" & Txt_Conn_Folder & "\" & File_Name__ & "")
If fileExists = False Then
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\" & Txt_Conn_Folder & "\" & File_Name__ & "", String.Empty, False)
Else
End If
End Sub
Public Sub DBinCONN(ByVal SqlDB_Script_Name__ As String)
Dim fileExists1 As Boolean
fileExists1 = My.Computer.FileSystem.FileExists(Application.StartupPath & "\" & Txt_Conn_Folder & "\" & SqlDB_Script_Name__ & "")
Try
If fileExists1 = False Then
My.Computer.FileSystem.CopyFile(Application.StartupPath & "\" & SqlDB_Script_Name__ & "", Application.StartupPath & "\" & Txt_Conn_Folder & "\" & SqlDB_Script_Name__ & "")
Else
End If
Catch ex As Exception
Dim msg As String = ""
msg &= "تأكد من وجود ملف القاعدة في مجلد البرنامج" & vbNewLine
msg &= "أو قم بنسخة يدويا إلى مجلد Conn" & vbNewLine
msg &= "من فضلك أعد المحاولة مرة أخرى ..." & vbNewLine
msg &= "" & vbNewLine
msg &= (ex.Message)
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Exit Sub
End Try
End Sub
End Class
الكود الثالث
سننشأ كلاس ونسميه " CLS_CONN_SERVER "
وسيكون مسئول عن جلب أسماء السيرفرات المثبته على الجهاز
وإنشاء قاعدة البيانات الخاصة بنا
وهو كالتالي
كود :
Imports Microsoft.Win32
Imports System.Data.SqlClient
Imports Microsoft.VisualBasic
Imports System
Imports System.Data
Public Class CLS_CONN_SERVER
#Region "Load Data"
'تحميل السيرفرات الموجودة على الجهاز
Public Sub LoadServer(ByVal Combo As ComboBox)
Try
Dim LocalMachine = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
Dim Rk = LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Microsoft SQL Server")
Dim Instance = CType(Rk.GetValue("InstalledInstances"), String())
If Instance.Length > 0 Then
For Each Element As String In Instance
If Element = "MSSQLSERVER" Then
Combo.Items.Add(System.Environment.MachineName)
Else
Combo.Items.Add(System.Environment.MachineName + "\" + Element)
End If
Next Element
End If
Catch ex As Exception
Dim msg As String = ""
msg &= "تأكد من وجود برنامج" & vbNewLine
msg &= "Microsoft sql sever" & vbNewLine
msg &= "مثبت على جهازك وأن السيرفر يعمل بالفعل" & vbNewLine
msg &= "ثم من فضلك أعد المحاولة مرة أخرى ..." & vbNewLine
msg &= "" & vbNewLine
msg &= (ex.Message)
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
End Try
End Sub
#End Region
Public Sub ADD_Database(ByVal Database_ As String)
If (CLS_R.Con_SERVER.State = ConnectionState.Open) Then
CLS_R.Con_SERVER.Close()
End If
CLS_R.Con_SERVER.Open()
Dim cmdd As New SqlCommand(("Create Database " & Strings.Trim(Database_) & ""), CLS_R.Con_SERVER)
cmdd.ExecuteNonQuery()
CLS_R.Con_SERVER.Close()
End Sub
End Class
الكود الرابع
سننشأ كلاس ونسميه " CLS_R "
وسيكون مسئول عن قراءة ملفين الأتصال
وهو كالتالي
كود :
Imports Microsoft.VisualBasic.CompilerServices
Imports System
Imports System.Data.SqlClient
Imports System.IO
Friend NotInheritable Class CLS_R
Public Shared TXT_CON___ As String = (File.ReadAllText(Application.StartupPath & "\" & Txt_Conn_Folder & "\" & Txt_CONN_SERVER & ""))
Public Shared Con_SERVER As SqlConnection = New SqlConnection(CLS_R.TXT_CON___)
End Class
الكود الخامس
في الفورم الرئيسي للمثال
سنضع الكود التالي
كود :
Imports System.IO
Imports System.Data.SqlClient
Imports System.Text.RegularExpressions
Public Class FrmMainCRDB
Private CLS_CONN_SERVER_ As CLS_CONN_SERVER
Private STR____ As String
Private CLS_Files__ As CLS_Files
Public Sub New()
IsOk_ = False
CLS_CONN_SERVER_ = New CLS_CONN_SERVER
CLS_Files__ = New CLS_Files
Me.InitializeComponent()
End Sub
Private Sub FrmMainCRDB_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Check_FF__()
CLS_CONN_SERVER_.LoadServer(Comb_Server_Name)
With Comb_Win_Auth
.Items.Add("Windows Authentication")
.Items.Add("SQL Server Authentication")
End With
End Sub
Private Sub Fill_Combo_Database()
On Error Resume Next
Comb_Av_Db.Items.Clear()
Dim DS As New DataSet
Dim SqlConnection1 As SqlClient.SqlConnection = New SqlClient.SqlConnection("Data Source=" & Comb_Server_Name.Text & ";Initial Catalog=tempdb;Integrated Security=SSPI;")
Dim str As String = "Select DISTINCT name from master.dbo.sysdatabases where name not IN('master','msdb','tempdb' ,'model') and has_dbaccess(Name) = 1 order by name "
Dim ADP As SqlClient.SqlDataAdapter
ADP = New SqlClient.SqlDataAdapter(str, SqlConnection1)
DS.Clear()
ADP.Fill(DS)
Comb_Av_Db.Items.Clear()
Dim i As Integer
For i = 0 To DS.Tables(0).Rows.Count - 1
Comb_Av_Db.Items.Add(DS.Tables(0).Rows(i).Item(0))
Next
ADP.Dispose()
SqlConnection1.Dispose()
End Sub
Private Sub Check_FF__()
Try
'دالة إنشاء المجلد
CLS_Files__.check_Folder__(Txt_Conn_Folder)
'دالة إنشاء الملفات
CLS_Files__.check_file__(Txt_CONN)
CLS_Files__.check_file__(Txt_CONN_SERVER)
CLS_Files__.DBinCONN(SqlDB_SCR_DB_Name__)
' MsgBox("Done")
Catch ex As Exception
Dim msg As String = ""
msg &= "فشل الأتصال بالسيرفر" & vbNewLine
msg &= "من فضلك أعد المحاولة مرة أخرى" & vbNewLine
msg &= "" & vbNewLine
msg &= (ex.Message)
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
End Try
End Sub
Private Sub checker__()
IsOk_ = True
If Comb_Server_Name.Text = "" Then
Dim msg As String = ""
msg &= "يجب إختيار اسم السيرفر" & vbNewLine
msg &= "من فضلك أعد المحاولة مرة أخرى" & vbNewLine
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Comb_Server_Name.Focus()
IsOk_ = False
Exit Sub
End If
If Comb_Win_Auth.SelectedIndex = -1 Then
Dim msg As String = ""
msg &= "يجب إختيار طريقة الولوج للسيرفر" & vbNewLine
msg &= "من فضلك أعد المحاولة مرة أخرى" & vbNewLine
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Comb_Win_Auth.Focus()
IsOk_ = False
Exit Sub
End If
If Comb_Win_Auth.SelectedIndex = 1 Then
If Txt_Login.Text.Length = 0 Then
Dim msg As String = ""
msg &= "يجب كتابة اسم المستخدم" & vbNewLine
msg &= "من فضلك أعد المحاولة مرة أخرى" & vbNewLine
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Txt_Login.Focus()
IsOk_ = False
Exit Sub
End If
If Txt_Password.Text.Length = 0 Then
Dim msg As String = ""
msg &= "يجب كتابة كلمة المرور" & vbNewLine
msg &= "من فضلك أعد المحاولة مرة أخرى" & vbNewLine
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Txt_Password.Focus()
IsOk_ = False
Exit Sub
End If
End If
IsOk_ = True
End Sub
Private Sub Btn_Test_Con_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Test_Con.Click
checker__()
If IsOk_ = True Then
Dim SqlConn As New SqlConnection
If Comb_Win_Auth.SelectedIndex = 0 Then
SqlConnStr = "Data Source=" & Comb_Server_Name.Text.Trim & ";Initial Catalog=master;Integrated Security=True"
End If
If Comb_Win_Auth.SelectedIndex = 1 Then
SqlConnStr = "Data Source=" & Comb_Server_Name.Text.Trim & ";Initial Catalog=master;User ID=" & Txt_Login.Text.Trim & ";Password=" & Txt_Password.Text & ""
End If
If SqlConn.State = ConnectionState.Closed Then
SqlConn.ConnectionString = SqlConnStr
Try
SqlConn.Open()
Dim msg As String = ""
msg &= "تم الأتصال بالسيرفر بنجاح" & vbNewLine
MsgBox(msg, CType(vbOKOnly + vbInformation + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Catch ex As Exception
Dim msg As String = ""
msg &= "فشل الأتصال بالسيرفر" & vbNewLine
msg &= "من فضلك أعد المحاولة مرة أخرى" & vbNewLine
msg &= "" & vbNewLine
msg &= (ex.Message)
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
End Try
End If
Else
Exit Sub
End If
End Sub
Public Sub CONN_SERVER()
Dim str As String
If Comb_Win_Auth.SelectedIndex = 1 Then
str = String.Concat(New String() {"Data Source=", Strings.Trim(Me.Comb_Server_Name.Text), ";User ID=", Strings.Trim(Me.Txt_Login.Text), ";password=", Strings.Trim(Me.Txt_Password.Text), ";Integrated Security=false"})
Else
str = (" Data Source=" & Strings.Trim(Me.Comb_Server_Name.Text) & ";Integrated Security=True")
End If
File.WriteAllText(Application.StartupPath & "\" & Txt_Conn_Folder & "\" & Txt_CONN_SERVER & "", str)
End Sub
Public Sub CREATE_TB_NEWDATAG()
Dim str As String
Me.CLS_CONN_SERVER_.ADD_DATABASE(Me.Txt_NewDataBase.Text)
If Comb_Win_Auth.SelectedIndex = 0 Then
str = String.Concat(New String() {" Data Source=", Me.Comb_Server_Name.Text, ";Initial Catalog=", Me.Txt_NewDataBase.Text, ";Integrated Security=True"})
Else
str = String.Concat(New String() {"Data Source=", Me.Comb_Server_Name.Text, ";Initial Catalog=", Me.Txt_NewDataBase.Text, ";User ID=", Me.Txt_Login.Text, ";password=", Me.Txt_Password.Text, ";Integrated Security=false"})
End If
Me.STR____ = str
File.WriteAllText(Application.StartupPath & "\" & Txt_Conn_Folder & "\" & Txt_CONN & "", str)
Dim connection As New SqlConnection(File.ReadAllText(Application.StartupPath & "\" & Txt_Conn_Folder & "\" & Txt_CONN & ""))
If (connection.State = ConnectionState.Open) Then
connection.Close()
End If
connection.Open()
Dim enumerable As IEnumerable(Of String) = Regex.Split(File.ReadAllText(Application.StartupPath & "\" & Txt_Conn_Folder & "\" & SqlDB_SCR_DB_Name__ & ""), "^\s*GO\s*$", (RegexOptions.Multiline Or RegexOptions.IgnoreCase))
Dim str3 As String
For Each str3 In enumerable
If (str3.Trim <> "") Then
Dim cmdd As New SqlCommand(str3, connection)
cmdd.ExecuteNonQuery()
End If
Next
connection.Close()
End Sub
Private Sub Comb_Win_Auth_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Comb_Win_Auth.SelectedIndexChanged
If Comb_Win_Auth.SelectedIndex = 0 Then
Txt_Login.ReadOnly = True
Txt_Password.ReadOnly = True
Else
Txt_Login.ReadOnly = False
Txt_Password.ReadOnly = False
End If
End Sub
Private Sub Comb_Server_Name_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Comb_Server_Name.SelectedIndexChanged
Fill_Combo_Database()
End Sub
Private Sub Btn_Create_DB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Create_DB.Click
checker__()
If IsOk_ = False Then
Exit Sub
Else
Try
If (Me.Txt_NewDataBase.Text = Nothing) Then
Dim msg As String = ""
msg &= "يجب إدخال أسم قاعدة البيانات الجديدة" & vbNewLine
msg &= "" & vbNewLine
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Exit Sub
ElseIf Comb_Av_Db.Items.Contains(Txt_NewDataBase.Text) = True Then
Dim msg As String = ""
msg &= "أسم القاعدة الذي أدختله موجود مسبقأ" & vbNewLine
msg &= "رجاء إدخال أسم مختلف ." & vbNewLine
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Exit Sub
Else
Me.CONN_SERVER()
Me.CREATE_TB_NEWDATAG()
Dim msg As String = ""
msg &= "تمت عملية إنشاء القاعدة بنجاح" & vbNewLine
msg &= "سيتم إعادة تشغيل البرنامج " & vbNewLine
msg &= "من فضلك إنتظر لحظات ..." & vbNewLine
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
Application.Restart()
' Me.Close()
End If
Catch ex As Exception
Dim msg As String = ""
msg &= "تأكد من بيانات الأتصال بالسيرفر" & vbNewLine
msg &= "تأكد من وجود ملف القاعدة في مجلد Conn" & vbNewLine
msg &= "من فضلك أعد المحاولة مرة أخرى ..." & vbNewLine
msg &= "" & vbNewLine
msg &= (ex.Message)
MsgBox(msg, CType(vbOKOnly + vbCritical + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxRtlReading + vbApplicationModal, MsgBoxStyle), "رسالة تنبيه")
End Try
End If
End Sub
End Class
وأخيرا مرحلة التطبيق runTime
عند فتح البرنامج لأول مرة يجب وجود ملف أسكربت القاعدة بجوار ملف التشغيل للبرنامج
سيقوم البرنامج بإنشاء المجلد والملفين اللذين سيتم حفظ نصوص الأتصال بداخلهم
وسينسخ ملف الأسكربت لداخل المجلد
أما في حالة وجودهم فسيتجاهل أوامر الأنشاء وسيقوم بالأجراءات التي تليه
وهو جلب أسماء السيرفرات
وجلب قواعد البيانات المخزنة في السيرفر
وسنستغل هذة الخاصية
في مقارنة الأسم الذى سيكتبه المستخدم بالقواعد الموجودة فإذا وجد تشابه فسيتوقف البرنامج
وإن لم يجد فسيتم إنشاء القاعدة
وبكده أنتهينا من المثال
وأسف على الأطالة
وأتمنى أن ينال إعجابكم أول مثال لي في المنتدى
ولا تنسوني من صالح دعائكم
**************************
مثال جيد أخر على نفس الفكرة ولكن بإستخدام ملفات القاعدة نفسها
وهو من كتابة الأخ الفاضل " mero5000 "
الرابط
http://vb4arb.com/vb/showthread.php?tid=26315
**************************
تنويه هام
* أستخدمت في هذا المثال
بعض من أكواد من سورسات لأمثلة متفرقة
* المثال قابل للتطوير
* أي ملاحظات أو أي توجيه أتقبله بصدر رحب
أقدم جزيل الشكر
للأخ الفاضل يوسف حداد صاحب الفكرة التى رأيتها
وأقتبست منها المثال
وللأخ الكريم والأستاذ الفاضل " eljokr "
وللأخ الكريم والأستاذ الفاضل " mero5000 "
وللأخ الكريم والأستاذ الفاضل " عبد العزيز البسكري "
لما يقدموه من مساعدة ومعلومات تفيدني وتفيد الجميع
ولكل الأخوة الكرام في المنتدى من إدارة وأعضاء
جزيل الشكر والأحترام
أنتهيت بفضل الله
إن كان صواباً فمن الله وحده وإن كان فيه من خطأ فمني ومن الشيطان
والسلام عليكم ورحمة الله وبركاته
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - elgokr - 03-09-18
موضوع شيق ورائع اخى princelovelorn
واصل دائماً ولا تتوقف عن ذلك
تحياتى لك
وتمنياتى لك التوفيق
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - princelovelorn - 03-09-18
(03-09-18, 07:22 AM)elgokr كتب : موضوع شيق ورائع اخى princelovelorn
واصل دائماً ولا تتوقف عن ذلك
تحياتى لك
وتمنياتى لك التوفيق
جزاك الله خيرا أخي elgokr
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - عبد العزيز البسكري - 03-09-18
السّلام عليكم و رحمة الله و بركاته
تحياتي و تقييماتي
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - kebboud - 03-09-18
(03-09-18, 07:22 AM)elgokr كتب : موضوع شيق ورائع اخى princelovelorn
واصل دائماً ولا تتوقف عن ذلك
تحياتى لك
وتمنياتى لك التوفيق
الاستاذ الجوكر
عندي قاعدة بيانات اكسس و فيها عدة جداول و لكنني اريد الربط بين جدولين فقط جدول ARABE و جدول ETUDIANT و بالتحديد ربط عمود رقم_الطالب في الجدول الاول بعمود رقم_الطالب في الجدول الثاني و نفس الشيء عمود الاسم في كلي الجدولين، بحيث إذا أضيف طالب جديد لجدول ETUDIANT اوتوماتيكيا ينضاف إلى جدول ARABE...
كيف يا شاطر ؟؟؟
مع تحياتي الحارة
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - princelovelorn - 03-09-18
(03-09-18, 03:40 PM)kebboud كتب : (03-09-18, 07:22 AM)elgokr كتب : موضوع شيق ورائع اخى princelovelorn
واصل دائماً ولا تتوقف عن ذلك
تحياتى لك
وتمنياتى لك التوفيق
الاستاذ الجوكر
عندي قاعدة بيانات اكسس و فيها عدة جداول و لكنني اريد الربط بين جدولين فقط جدول ARABE و جدول ETUDIANT و بالتحديد ربط عمود رقم_الطالب في الجدول الاول بعمود رقم_الطالب في الجدول الثاني و نفس الشيء عمود الاسم في كلي الجدولين، بحيث إذا أضيف طالب جديد لجدول ETUDIANT اوتوماتيكيا ينضاف إلى جدول ARABE...
كيف يا شاطر ؟؟؟
مع تحياتي الحارة
يفضل وضع موضوع في قسم الأسئلة الخاص بالمنتدى
مع مثال بسيط لما تريد فعله
http://vb4arb.com/vb/forumdisplay.php?fid=183
حتى يستطيع الاستاذ الجوكر رؤيته
ويستطيع الجميع قراءة السؤال
والمساهمة في الحل
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - عبد العزيز البسكري - 03-09-18
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك و جزاك خير الجزاء يا غالي على المثال أكثر من الرّوعة ذاتها .. فقط يحتاج إلى بعض التّعديلات البسيطة لو سمحت فضلا لا أمرا النظر بها لا حقا ..
مشكلتي أخي الكريم .. للتجربة قمت بما يلي
لديّ على جهازي قاعدة بيانات من نوع SQL SERVER تحت اسم LOCATION
قمت بعملية نسخ و لصق لهذه القاعدة و أسميت سكريبت قاعدة البيانات المنسوخة باسم SCHOOL
بعد الإتّصال السليم .. كتبت اسم السكريبت .. و تمّ فعلا إنشاء قاعدة بيانات على السيرفر
المشكلة أخي الغالي ..
لم أجد أي جدول من الجداول بقاعدة البيانات الجديدة .. رغم أنّها سكريبت مأخوذ من قاعدة بيانات شغّالة و مليئة بالجداول
زيادة أنّها تخبرني بأنّ هناك جداول بأسماء متشابهة رغم اسم قاعدة البيانات مختلف
ملاحظة خارجية : كيف يعرف المستخدم الجديد للبرنامج الاسم الصحيح الواجب كتابته بالتاكست المخصص لذلك و هو مجبر أن يتم كتابته تماما مثلما هو مكتوب اسم قاعدة البيانات بالسكريبت الذي هو بالمجلد Debug و المشروع تنفيذي بصيغة Exe و قد يتعدد مستخدميه
تحياتي واحتراماتي أخي الكريم
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - princelovelorn - 03-09-18
[attachment=19342 كتب :عبد العزيز البسكري pid='126853' dateline='1535978175']
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك و جزاك خير الجزاء يا غالي على المثال أكثر من الرّوعة ذاتها .. فقط يحتاج إلى بعض التّعديلات البسيطة لو سمحت فضلا لا أمرا النظر بها لا حقا ..
مشكلتي أخي الكريم .. للتجربة قمت بما يلي
لديّ على جهازي قاعدة بيانات من نوع SQL SERVER تحت اسم LOCATION
قمت بعملية نسخ و لصق لهذه القاعدة و أسميت سكريبت قاعدة البيانات المنسوخة باسم SCHOOL
بعد الإتّصال السليم .. كتبت اسم السكريبت .. و تمّ فعلا إنشاء قاعدة بيانات على السيرفر
المشكلة أخي الغالي ..
لم أجد أي جدول من الجداول بقاعدة البيانات الجديدة .. رغم أنّها سكريبت مأخوذ من قاعدة بيانات شغّالة و مليئة بالجداول
زيادة أنّها تخبرني بأنّ هناك جداول بأسماء متشابهة رغم اسم قاعدة البيانات مختلف
ملاحظة خارجية : كيف يعرف المستخدم الجديد للبرنامج الاسم الصحيح الواجب كتابته بالتاكست المخصص لذلك و هو مجبر أن يتم كتابته تماما مثلما هو مكتوب اسم قاعدة البيانات بالسكريبت الذي هو بالمجلد Debug و المشروع تنفيذي بصيغة Exe و قد يتعدد مستخدميه
تحياتي واحتراماتي أخي الكريم
وعليكم السلام ورحمة الله وبركاته
وفيكم بارك الله أخي الكريم وجزاك الله خيرا
أولا بالنسبة للملاحظة الخارجية
الفكرة أن المستخدم مخير بأختيار اي اسم لقاعدة البيانات
الأسم الذي سيتم أستخدامه في البرنامج
عن طريق جملة الاتصال
وموديل المعلومات
بالنسبة لموديل المعلومات mod_info
فهو خاص بالمبرمج فقط وليس للمستخدم
بمعنى أخر البرنامج معه سكربت القاعدة ( أي كان اسمه أو اسم القاعدة )
ومعه الاوامر لتركيب الاسكربت كاملة ما عدا اسم القاعدة فقط
الاسم الذي سياخذة من المستخدم وقت التركيب وسيتم حفظه في جملة الاتصال
جملة الاتصال سنسحبها للبرنامج ونقوم بالعمل على قاعدة البيانات المخزنة فيها
بمعنى ان ممكن نستخدم اكثر من قاعدة بيانات في نفس الوقت للبرنامج
عن طريق شاشة تتيح للمستخدم اختيار القاعدة التى يريد العمل عليها
ودا هايكون من داخل البرنامج
الفكرة فكرة جعل البرنامج اكثر مرونة
أتمنى ان أكون استطعت توصيل الفكرة لحضرتك أخى الفاضل
بالنسبة للمشكلة
الأسم الذي ظهر لك في الرسالة هو اسم القاعدة الاصلى بالفعل
وواجهتني نفس المشكلة بالظبط
وقمت بتخطيها عن طريق التالى
فتحت ملف الاسكربت الذي قمت بانشائه
بمحرر نصوص مثلا notepad++
أو حتى بال sql mangaer
وقمت بتحديد من أول سطر في الملف إلي ماقبل السطر
التالي
CREATE TABLE [dbo].[EMPLOYEE](
وهو اول جدول سيتم إنشائه
وقمت بحذف المحدد كله
وتركت السطر
CREATE TABLE [dbo].[EMPLOYEE](
وما يليه كما هو وحفظت الملف
وقمت بالتجربة
ونجحت بالفعل
طبعا هذة الطريقة جائت بعد محاولات عديدة على اسكربتات مختلفة عندى
حتى وجدت اسكربت يعمل تمام
فقارنت بينه وبينهم
وأستنتجت ما قمت بعمله
جرب الاسكربت المرفق هنا بدون ان تجري اي تعديلات
بصراحة انا عارف ان الطريقة عشوائية وهذا ليس بحل برمجي صحيح
وما قمت بحذفة هو ربما خصائص مهمة جدا للقاعدة
ولكن نجحت معى
وأتمنى من الخبراء والأساتذة الكبار هنا أن يفيدونا فيها
*ملاحظة انا استخدم sql server 2008 r2
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - mohamed Matrix - 24-02-23
السلام عليكم ورحمة الله وبركاته
اخي الفاضل
عند انشاء قاعدة بيانات جديدة بواسطة السكريبت يتم انشائها تماما ولاكن بدون البيانات الموجودة بادخلها ما السبب
RE: طريقة إنشاء قاعدة sql بواسطة script برمجيا وكتابة أسمها بواسطة العميل - sanyor77 - 26-03-23
أخي الفاضل، يمكن أن يكون هناك عدة أسباب لذلك, بما في ذلك:
- خطأ في الإدخال: قد يحدث خطأ في إدخال بيانات الجدول أثناء إنشاء قاعدة البيانات، فيجب التأكد من صحة البيانات المدخلة.
- خلل في الكود: قد يحدث خلل في الإطار البرمجي المستخدم لإنشاء قاعدة البيانات، ويجب التأكد من أن الإطار البرمجي يعمل بشكل صحيح.
- عدم تأكيد البيانات: قد يكون أن تحتاج إلى تأكيد بيانات الجدول قبل إدخالها في قاعدة البيانات، ويجب التأكد من أن هذا التأكيد يتم بشكل صحيح.
من المهم أن تفتح المصدر البرمجي وتتأكد من أن الإطار البرمجي يعمل بشكل صحيح وأن جميع البيانات المدخلة هي بشكل صحيح.
|