09-10-20, 01:54 AM
09-10-20, 02:39 PM
استاذى الكريم شكرااا لك
هل تقصد ان استبدل هذا الكود
بالكود الجديد
عملت كده بس مفيش فايدة
انا اقصد تغيير مسار قواعد البيانات التى يتم انشائها والتى تخص الشركات وليس قاعدة بيانات company
هل من كود يضاف فى الاسكريبت الخاص بتكوين الداتا من خلال استخدام السيكوال يحل المشكلة
عنند استبدال الكود يظهر خطأ مرفق الصور
هل تقصد ان استبدل هذا الكود
كود :
Sub CreateDatabaseCompanys(ByVal Dgv As DataGridView)
Dim StrSQL As String = "Create database Companys"
Dim da As New System.Data.SqlClient.SqlDataAdapter(StrSQL, cn)
Dim dt As New DataTable
da.Fill(dt)
CreateTable(Dgv)
End Subبالكود الجديد
كود :
''' <summary>
''' Create Database For MS SQL Server
''' </summary>
''' <param name="DatabaseName">Database Name String</param>
''' <param name="DirectoryOfDatabase">Directory Of Database String</param>
''' <param name="CreateAndCode">Creat The Database And Write Code or Write Code</param>
''' <returns>Return True And Sql Query String,Return False And Sql Query String</returns>
Function CreateDatabaseForMSSQLServer(ByVal DirectoryOfDatabase As String, ByVal DatabaseName As String, ByVal CreateAndCode As Boolean) As String
Dim SqlStrXT As String = String.Empty
Dim Con As New SqlConnection("Server =(local);database=master;integrated security=True")
Try
Dim DIR1 As String = ""
Dim DIR2 As String = ""
Dim DTTable As New DataTable
DTTable.Clear()
If Not IO.Directory.Exists(DirectoryOfDatabase & "\MyDATABASE_NAME") Then Directory.CreateDirectory(DirectoryOfDatabase & "\MyDATABASE_NAME")
DIR1 = DirectoryOfDatabase & "\MyDATABASE_NAME\" & DatabaseName & ".mdf"
DIR2 = DirectoryOfDatabase & "\MyDATABASE_NAME\" & DatabaseName & "_log.ldf"
SqlStrXT = " CREATE DATABASE [" + DatabaseName + "] ON PRIMARY ( NAME = N'" & DatabaseName & _
"', FILENAME = N'" & DIR1 & "' , SIZE = 4096KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'" & _
DatabaseName & "_log', FILENAME = N'" & DIR2 & "' , SIZE = 832KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)" & vbNewLine
If CreateAndCode Then
Dim da As New SqlClient.SqlDataAdapter(SqlStrXT, Con)
If Con.State = ConnectionState.Closed Then Con.Open()
da.Fill(DTTable)
If Con.State = ConnectionState.Open Then Con.Close()
End If
MsgBox(SqlStrXT & vbNewLine & "Database Created Successfully", MsgBoxStyle.Information, "")
If Con.State = ConnectionState.Open Then Con.Close()
Return True & " - " & SqlStrXT '' & vbNewLine & "Database Created Successfully"
Catch ex As Exception
MsgBox("Error : " & ex.Message, MsgBoxStyle.Critical, "Error")
If Con.State = ConnectionState.Open Then Con.Close()
Return False & " - " & SqlStrXT
End Try
End Functionعملت كده بس مفيش فايدة
انا اقصد تغيير مسار قواعد البيانات التى يتم انشائها والتى تخص الشركات وليس قاعدة بيانات company
هل من كود يضاف فى الاسكريبت الخاص بتكوين الداتا من خلال استخدام السيكوال يحل المشكلة
عنند استبدال الكود يظهر خطأ مرفق الصور
09-10-20, 04:04 PM
هذا الفانكشن له 3 باراميترات :
DirectoryOfDatabase , DatabaseName , CreateAndCode
اي :
DirectoryOfDatabase , DatabaseName , CreateAndCode
اي :
PHP كود :
'DirectoryOfDatabase مسار قاعدة البيانات'
'DatabaseName اسم قاعدة البيانات'
'CreateAndCode التأكيد على بناء قاعدة البيانات'
CreateDatabaseForMSSQLServer(DirectoryOfDatabase , DatabaseName , CreateAndCode)
09-10-20, 04:36 PM
(09-10-20, 04:04 PM)asemshahen5 كتب : [ -> ]هذا الفانكشن له 3 باراميترات :
DirectoryOfDatabase , DatabaseName , CreateAndCode
اي :
PHP كود :
'DirectoryOfDatabase مسار قاعدة البيانات'
'DatabaseName اسم قاعدة البيانات'
'CreateAndCode التأكيد على بناء قاعدة البيانات'
CreateDatabaseForMSSQLServer(DirectoryOfDatabase , DatabaseName , CreateAndCode)
09-10-20, 08:27 PM
با اخي بدل كتابة DirectoryOfDatabase ضع مسارك الذي تريد حفظ قاعدة البيانات به .
بدل كتابة DatabaseName ضع اسم قاعدة البيانات .
بدل CreateAndCode ضع true لتاكيد انشاء قاعدة البيانات و false لعدم انشائها .
بدل كتابة DatabaseName ضع اسم قاعدة البيانات .
بدل CreateAndCode ضع true لتاكيد انشاء قاعدة البيانات و false لعدم انشائها .
10-10-20, 02:01 AM
(09-10-20, 08:27 PM)asemshahen5 كتب : [ -> ]با اخي بدل كتابة DirectoryOfDatabase ضع مسارك الذي تريد حفظ قاعدة البيانات به .
بدل كتابة DatabaseName ضع اسم قاعدة البيانات .
بدل CreateAndCode ضع true لتاكيد انشاء قاعدة البيانات و false لعدم انشائها .
اخى الكريم اشكرك على تعبك معى
تم تنفيذ الكود وهو يعمل الان تمام ولكن ما يتم انشائة هو الداتا company
والتى تحتوى على بيانات الشركات وهى غير المقصودة
المقصود هو الداتا التى يتم انشائها من الاسكريبت والتى يكون اسمها StockDB1 او StockDB2 او اى اسم ياتى بعدهم
هما دو القواعد التى اريد ان احدد لها مكان ثابت بعيدا عن الدرايف c
والتى تنشأ نتيجه قرائة الاسكريبت
كود :
#Region "Creat Database And Table From Sql Scrpt"
'يقرأ ملفات السكول سيرفر من ملفات التكست الموجودة في مسار البرنامج'
Public Sub ExecutesqlFile(ByVal sqlFile As String, ByVal DatabaseName As String)
Using connection As New SqlClient.SqlConnection("server=" & Servernametext & ";database=" & DatabaseName & ";integrated security=true")
If connection.State = ConnectionState.Closed Then connection.Open()
Dim sql As String = ""
Using strm As FileStream = File.OpenRead(sqlFile)
Dim reader As New StreamReader(strm)
sql = reader.ReadToEnd()
End Using
Dim regex As New RegularExpressions.Regex("^GO", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
Dim lines As String() = regex.Split(sql)
Dim transaction As SqlClient.SqlTransaction = connection.BeginTransaction()
Using cmd As SqlClient.SqlCommand = connection.CreateCommand()
cmd.Connection = connection
cmd.Transaction = transaction
For Each line As String In lines
If line.Length > 0 Then
cmd.CommandText = line
cmd.CommandType = CommandType.Text
Try
cmd.ExecuteNonQuery()
Catch generatedExceptionName As SqlClient.SqlException
MsgBox(generatedExceptionName.Message, MsgBoxStyle.Critical, "")
transaction.Rollback()
Throw
End Try
End If
Next
End Using
transaction.Commit()
If connection.State = ConnectionState.Open Then connection.Close()
End Using
End Sub
#End Regionبمعنى انى عاوز ابعت للاسكريبت ده اسم قاعدة البيانات الى هى مثلا StockDB1 لانها بتكون متغيرة ومش هينفع تكون ثابتة فى ملف الاسكريبت
مثل
كود :
CREATE DATABASE [StockDB8] ON PRIMARY
( NAME = N'StockDB8', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SERVER\MSSQL\DATA\StockDB8.mdf' , SIZE = 5376KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'StockDB8_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SERVER\MSSQL\DATA\StockDB8_log.LDF' , SIZE = 4736KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GOهى دى الجملة الى عاوز اضفها للاسكريبت فى كل مرة انشئ فيها قاعدة جديدة لكن يكون متغير بها اسم الداتا ومتغير بها المسار
اسف على تكرار الاسئلة ولكن الموضوع هام بالنسبة لى واعرف كم تعبتك معى من بداية الموضوع وحتى الان ولكن لا املك الا ان اقدم لك كل الشكر والتقدير على ما تبذلة من جهد داخل المنتدى
اشكرك اخى الغالى عاصم
10-10-20, 06:07 PM
اخي العزيز في نافذة : CreateCompany
عدل الكود التالي :
عدل الكود التالي :
PHP كود :
Private Sub BtnUpdate_Click(sender As Object, e As EventArgs) Handles BtnUpdate.Click
Dim SqlStrXT As String = "create Database " & Txt_DatabaseName.Text
ExeSql(SqlStrXT)
Try
ExecutesqlFile(Application.StartupPath & "\SqlCreateCompany.Sql", Txt_DatabaseName.Text)
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
Dim StrSQL As String = "INSERT INTO CompanyName (ID,CompanyName,StartDate,EndDate,CompanyCase,ServerName,DatabaseName ) VALUES ('" & Txt_ID.Text & "','" & Txt_CompanyName.Text & "','" & Dtp_StartDate.Value & "','" & Dtp_EndDate.Value & "','" & Chk_CompanyCase.Checked & "','" & Txt_ServerName.Text & "','" & Txt_DatabaseName.Text & "')"
ExeSql(StrSQL)
BtnAdd.Enabled = True
BtnEdit.Enabled = True
BtnDelete.Enabled = True
BtnUpdate.Enabled = False
BtnCancel.Enabled = False
End Sub
10-10-20, 09:49 PM
(10-10-20, 06:07 PM)asemshahen5 كتب : [ -> ]اخي العزيز في نافذة : CreateCompany
عدل الكود التالي :
PHP كود :
Private Sub BtnUpdate_Click(sender As Object, e As EventArgs) Handles BtnUpdate.Click
Dim SqlStrXT As String = "create Database " & Txt_DatabaseName.Text
ExeSql(SqlStrXT)
Try
ExecutesqlFile(Application.StartupPath & "\SqlCreateCompany.Sql", Txt_DatabaseName.Text)
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
Dim StrSQL As String = "INSERT INTO CompanyName (ID,CompanyName,StartDate,EndDate,CompanyCase,ServerName,DatabaseName ) VALUES ('" & Txt_ID.Text & "','" & Txt_CompanyName.Text & "','" & Dtp_StartDate.Value & "','" & Dtp_EndDate.Value & "','" & Chk_CompanyCase.Checked & "','" & Txt_ServerName.Text & "','" & Txt_DatabaseName.Text & "')"
ExeSql(StrSQL)
BtnAdd.Enabled = True
BtnEdit.Enabled = True
BtnDelete.Enabled = True
BtnUpdate.Enabled = False
BtnCancel.Enabled = False
End Sub
تمام
ظبط الكود
كيف تكون جملة الاتصال فى حالة الشبكة
بمعنى ان البرنامج يكون على جهاز والسيرفر على جهاز بالنسبة للجذء الاول للدخول على الداتا COMPANY