הערה
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות להיכנס או לשנות מדריכי כתובות.
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות לשנות מדריכי כתובות.
Question
Thursday, April 13, 2017 9:22 PM
I'm use connection String , I want get (id) number before insert to reserve a row empty in table sql server for the purpose of entering data
All replies (12)
Thursday, April 13, 2017 10:44 PM ✅Answered
The following is against SQL-Server. Insert a new row on form load, get it's key. Press the insert button finds that record and updates it else pressing cancel removes the newly added record.
Imports System.Data.SqlClient
Public Class ExampleForm
Private NewIdentifier As Integer = 0
''' <summary>
''' Insert row, present id in text box
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub ExampleForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using cn As New SqlConnection With {.ConnectionString = "TODO"}
Using cmd As New SqlCommand With {.Connection = cn}
cmd.CommandText = "INSERT INTO [Customer] (CompanyName) VALUES (@CompanyName); SELECT CAST(scope_identity() AS int);"
cmd.Parameters.AddWithValue("@CompanyName", "Temp")
cn.Open()
NewIdentifier = CInt(cmd.ExecuteScalar)
txtId.Text = NewIdentifier.ToString
End Using
End Using
End Sub
''' <summary>
''' Update row with id set in form load
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub cmdInsert_Click(sender As Object, e As EventArgs) Handles cmdInsert.Click
If String.IsNullOrWhiteSpace(txtCompanyName.Text) Then
MessageBox.Show("Please enter a company name")
Exit Sub
End If
Using cn As New SqlConnection With {.ConnectionString = "TODO"}
Using cmd As New SqlCommand With {.Connection = cn}
cmd.CommandText = "UPDATE Customer SET CompanyName = @CompanyName WHERE Identifier = @Identifier"
cmd.Parameters.AddWithValue("@CompanyName", txtCompanyName.Text)
cmd.Parameters.AddWithValue("@Identifier", NewIdentifier)
cn.Open()
Dim affected As Integer = cmd.ExecuteNonQuery
If affected <> 1 Then
MessageBox.Show("Update failed")
Else
MessageBox.Show("Updated")
End If
End Using
End Using
End Sub
''' <summary>
''' Remove record
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub cmdCancel_Click(sender As Object, e As EventArgs) Handles cmdCancel.Click
Using cn As New SqlConnection With {.ConnectionString = "TODO"}
Using cmd As New SqlCommand With {.Connection = cn}
cmd.CommandText = "DELETE FROM Customer WHERE Identifier = @Identifier"
cmd.Parameters.AddWithValue("@Identifier", NewIdentifier)
cn.Open()
Dim affected As Integer = cmd.ExecuteNonQuery
If affected <> 1 Then
MessageBox.Show("Delete failed")
Else
cmdInsert.Enabled = False
End If
End Using
End Using
End Sub
End Class
Using MS-Access the difference is the insert e.g.
Public Function AddNewRow(ByVal Name As String, ByRef Identfier As Integer) As Boolean
Dim Success As Boolean = True
Dim Affected As Integer = 0
Try
Using cn As New OleDbConnection With {.ConnectionString = "TODO"}
Using cmd As New OleDbCommand With {.Connection = cn}
cmd.CommandText = "INSERT INTO Customer (CompanyName) Values(@CompanyName)"
cmd.Parameters.AddWithValue("@CompanyName", Name)
cn.Open()
Affected = cmd.ExecuteNonQuery()
If Affected = 1 Then
cmd.CommandText = "Select @@Identity"
Identfier = CInt(cmd.ExecuteScalar)
End If
End Using
End Using
Catch ex As Exception
Success = False
End Try
Return Success
End Function
If using TableAdapter you will need to check your constraints and test as the insert is easily done unless working with MS-Access will take a tad more work.
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
Monday, April 17, 2017 1:29 PM ✅Answered
Basics
Using cn As New SqlConnection With {.ConnectionString = "TODO"}
Using cmd As New SqlCommand With {.Connection = cn}
cmd.CommandText = "SELECT CompanyName, FROM [Customer] WHERE Identifier = @Identifier"
cmd.Parameters.AddWithValue("@Identifier", txtId.Text)
cn.Open()
Dim reader = cmd.ExecuteReader
If reader.HasRows Then
reader.Read()
txtCompanyName.Text = CType(reader.GetSqlString(0), String)
End If
End Using
End Using
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
Thursday, April 13, 2017 9:50 PM
You would need to create a new record with the ID set and all other values set to null, assuming the database fields allow it.
Reed Kimble - "When you do things right, people won't be sure you've done anything at all"
Friday, April 14, 2017 5:18 AM
Hi srajmuneer,
Based on your description, can you tell why you want to do this? If your project is single use, you can get the last record ID from Sql, and then +1 to get the latest ID. If you project is used by many people, I think it is very unreasonable practice.
Best Regards,
Cherry Bu
MSDN Community Support
Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.
Friday, April 14, 2017 5:21 PM
thank you very much Kareninstructor ,
I have a question and if 50 users use this my interface that contains your code at the same time by insert or updating or deleting it will cause a slowdown in these processes
Friday, April 14, 2017 5:29 PM
I mean Insert data in one table within multiple users is normal
for my interface use your code
Friday, April 14, 2017 6:29 PM
thank you very much Kareninstructor ,
I have a question and if 50 users use this my interface that contains your code at the same time by insert or updating or deleting it will cause a slowdown in these processes
No the code will not cause performance issues.
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
Friday, April 14, 2017 6:40 PM
thank you very much Kareninstructor your code very good
Monday, April 17, 2017 11:28 AM
The following is against SQL-Server. Insert a new row on form load, get it's key. Press the insert button finds that record and updates it else pressing cancel removes the newly added record.
Imports System.Data.SqlClient Public Class ExampleForm Private NewIdentifier As Integer = 0 ''' <summary> ''' Insert row, present id in text box ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub ExampleForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load Using cn As New SqlConnection With {.ConnectionString = "TODO"} Using cmd As New SqlCommand With {.Connection = cn} cmd.CommandText = "INSERT INTO [Customer] (CompanyName) VALUES (@CompanyName); SELECT CAST(scope_identity() AS int);" cmd.Parameters.AddWithValue("@CompanyName", "Temp") cn.Open() NewIdentifier = CInt(cmd.ExecuteScalar) txtId.Text = NewIdentifier.ToString End Using End Using End Sub ''' <summary> ''' Update row with id set in form load ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub cmdInsert_Click(sender As Object, e As EventArgs) Handles cmdInsert.Click If String.IsNullOrWhiteSpace(txtCompanyName.Text) Then MessageBox.Show("Please enter a company name") Exit Sub End If Using cn As New SqlConnection With {.ConnectionString = "TODO"} Using cmd As New SqlCommand With {.Connection = cn} cmd.CommandText = "UPDATE Customer SET CompanyName = @CompanyName WHERE Identifier = @Identifier" cmd.Parameters.AddWithValue("@CompanyName", txtCompanyName.Text) cmd.Parameters.AddWithValue("@Identifier", NewIdentifier) cn.Open() Dim affected As Integer = cmd.ExecuteNonQuery If affected <> 1 Then MessageBox.Show("Update failed") Else MessageBox.Show("Updated") End If End Using End Using End Sub ''' <summary> ''' Remove record ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub cmdCancel_Click(sender As Object, e As EventArgs) Handles cmdCancel.Click Using cn As New SqlConnection With {.ConnectionString = "TODO"} Using cmd As New SqlCommand With {.Connection = cn} cmd.CommandText = "DELETE FROM Customer WHERE Identifier = @Identifier" cmd.Parameters.AddWithValue("@Identifier", NewIdentifier) cn.Open() Dim affected As Integer = cmd.ExecuteNonQuery If affected <> 1 Then MessageBox.Show("Delete failed") Else cmdInsert.Enabled = False End If End Using End Using End Sub End Class
Using MS-Access the difference is the insert e.g.
Public Function AddNewRow(ByVal Name As String, ByRef Identfier As Integer) As Boolean Dim Success As Boolean = True Dim Affected As Integer = 0 Try Using cn As New OleDbConnection With {.ConnectionString = "TODO"} Using cmd As New OleDbCommand With {.Connection = cn} cmd.CommandText = "INSERT INTO Customer (CompanyName) Values(@CompanyName)" cmd.Parameters.AddWithValue("@CompanyName", Name) cn.Open() Affected = cmd.ExecuteNonQuery() If Affected = 1 Then cmd.CommandText = "Select @@Identity" Identfier = CInt(cmd.ExecuteScalar) End If End Using End Using Catch ex As Exception Success = False End Try Return Success End Function
If using TableAdapter you will need to check your constraints and test as the insert is easily done unless working with MS-Access will take a tad more work.
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
thank you Kareninstructor , for help ,
I want use select query and show result into textboxID , textboxCompanyName ........... use same your code
Tuesday, April 18, 2017 7:41 PM
thank you Kareninstructor , you can search for CompanyName any part text and show result into textbox and use button NEXT to move row1 to row2 to row3 to row4 ............ by your code select
Tuesday, April 18, 2017 8:19 PM
Use LIKE and when doing so use parameters
https://www.w3schools.com/sql/sql_like.asp
See the following to get an idea for parameters (I would write something up but in the middle of a BDD: behavior driven development session)
http://stackoverflow.com/questions/665129/use-of-sqlparameter-in-sql-like-clause-not-working
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my Twitter (Karen Payne) or Facebook (Karen Payne) via my MSDN profile but will not answer coding question on either.
VB Forums - moderator
Thursday, April 20, 2017 5:40 AM
thank you Kareninstructor , can Using Sequence with your query (insert) "INSERT INTO [Customer] (CompanyName) VALUES (@CompanyName); SELECT CAST(scope_identity() AS int);"
because jump identity ID column from 100 to 1000
I'm use sql server 2014
help code