STP_Captain_Slow
New member
- Joined
- Oct 6, 2010
- Messages
- 1
- Programming Experience
- 1-3
Hi
This is my first post and i hope i'm not asking too much.....
I am new(ish) to Visual Basic and i have learned from looking at old VB6 code for programs that have been made for us in the past, this includes using the old ADODB connections and FlexGrids which both have been changed in VB.Net to OLEDB and DataGridView.
I have started to understand the way the connections and datasets etc are created but i am struggling to get to where i was with the old code (I am trying to completely upgrade the code from FlexGrid).
This is the part of the VB6 Code i am trying to upgrade from:
A quick summary of the code is that I create two Connection strings / commands and record sets. The first opens the database preforms the SELECT command and populates the RecordSet then I use the Second connection to pull the description that matches the results of the first statement and then populate the FlexGrid (a little bit of trimming is done on the Description before the FlexGrid is populated) I understand how this works as i just use the information from RecSet1 to populate Col1 then data from RecSet2 to populate Col2.
As with my VB.NET version I have managed to create the DataGridView and populate it with the first select statement which populates the Grid correctly according to the SELECT DISTINCT Statement. I now need to understand how i create the second connection and populate it with the column contents based on the results of the first statement, then populate the DataGridView with the information, as i can't see how it happens the same way as the VB6 version with the RecSet's.
VB.NET Code below:
So I need some help to create the second nested connection and command as it is done in the VB6 version and then how I would populate the DataGridView correctly.
I was also wondering how I can populate a predefined DataGridView where I have added the Columns and set the Column Properties? This is because when I did that and then ran the above VB.NET code it showed my columns but populated new columns added to the end. Or if I can set the column properties after the DatGridView is populated as I need the columns to be read only.
Thanks for any help or suggestions in advance!!!
This is my first post and i hope i'm not asking too much.....
I am new(ish) to Visual Basic and i have learned from looking at old VB6 code for programs that have been made for us in the past, this includes using the old ADODB connections and FlexGrids which both have been changed in VB.Net to OLEDB and DataGridView.
I have started to understand the way the connections and datasets etc are created but i am struggling to get to where i was with the old code (I am trying to completely upgrade the code from FlexGrid).
This is the part of the VB6 Code i am trying to upgrade from:
VB.NET:
Dim SQLConn As New ADODB.Connection
Dim SQLConn2 As New ADODB.Connection
Dim SQLCommand As New ADODB.Command
Dim SQLCommand2 As New ADODB.Command
Dim SQLRecSet As New ADODB.Recordset
Dim SQLRecSet2 As New ADODB.Recordset
Dim varSQLString As String
Dim varSQLString2 As String
Dim varFlxRow As Short
Dim varDescTemp As String
Dim varFirstHash As Integer
Dim varExistBol As Boolean
'Dim varExist As Integer
Me.flxProduct.Clear()
SQLConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source = DATAPATH
SQLConn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source = DATAPATH
varSQLString = "SELECT DISTINCT LEFT(ProductBarcode,13) AS Code FROM tblProduct "
varSQLString = varSQLString & " WHERE ProductBarcode LIKE '%" & frmWebUpdate.txtCode.Text & "%' OR Description LIKE '%" & frmWebUpdate.txtCode.Text & "%'"
varSQLString = varSQLString & " ORDER BY LEFT(ProductBarcode,13) "
'Open the database.
SQLConn.Open()
SQLCommand.CommandText = "tblProduct"
SQLCommand.CommandType = ADODB.CommandTypeEnum.adCmdTable
SQLRecSet.CursorLocation = ADODB.CursorLocationEnum.adUseClient
SQLRecSet.CursorType = ADODB.CursorTypeEnum.adOpenStatic
SQLConn2.Open()
SQLCommand2.CommandText = "tblProduct"
SQLCommand2.CommandType = ADODB.CommandTypeEnum.adCmdTable
SQLRecSet2.CursorLocation = ADODB.CursorLocationEnum.adUseClient
SQLRecSet2.CursorType = ADODB.CursorTypeEnum.adOpenStatic
SQLRecSet.Open(varSQLString, SQLConn, ADODB.CursorTypeEnum.adOpenStatic)
If SQLRecSet.RecordCount <> 0 Then
varFlxRow = 0
SQLRecSet.MoveFirst()
Do While Not SQLRecSet.EOF
'frmWebUpdate.lblInfo.Text = "Retrieving Data"
System.Windows.Forms.Application.DoEvents()
'Run a Second Query to retrieve a single description
varSQLString2 = "SELECT Description FROM tblProduct WHERE ProductBarcode LIKE '" & SQLRecSet.Fields("Code").Value & "%'"
SQLRecSet2.Open(varSQLString2, SQLConn2, ADODB.CursorTypeEnum.adOpenStatic)
SQLRecSet2.MoveFirst()
varFlxRow = varFlxRow + 1
Me.flxProduct.Row = varFlxRow
Me.flxProduct.Col = 0
Me.flxProduct.Text = SQLRecSet.Fields("Code").Value
Me.flxProduct.Col = 1
varDescTemp = SQLRecSet2.Fields("Description").Value
varExistBol = varDescTemp Like "*10-11*" Or varDescTemp Like "*09-10*" Or varDescTemp Like "*08-09*" Or varDescTemp Like "*09-11*"
txtExistBol.Text = varExistBol
varFirstHash = varDescTemp.IndexOf("-")
txtHash.Text = varFirstHash
If varExistBol = True Then
Me.flxProduct.Text = " " + varDescTemp.Substring(0, varFirstHash + 4)
Else
Me.flxProduct.Text = " " + varDescTemp.Substring(0, varFirstHash)
End If
SQLRecSet2.Close()
SQLRecSet.MoveNext()
frmWebUpdate.lblTest.Text = ""
System.Windows.Forms.Application.DoEvents()
Loop
End If
'Close Connection
SQLConn.Close()
Exit Sub
A quick summary of the code is that I create two Connection strings / commands and record sets. The first opens the database preforms the SELECT command and populates the RecordSet then I use the Second connection to pull the description that matches the results of the first statement and then populate the FlexGrid (a little bit of trimming is done on the Description before the FlexGrid is populated) I understand how this works as i just use the information from RecSet1 to populate Col1 then data from RecSet2 to populate Col2.
As with my VB.NET version I have managed to create the DataGridView and populate it with the first select statement which populates the Grid correctly according to the SELECT DISTINCT Statement. I now need to understand how i create the second connection and populate it with the column contents based on the results of the first statement, then populate the DataGridView with the information, as i can't see how it happens the same way as the VB6 version with the RecSet's.
VB.NET Code below:
VB.NET:
Dim varConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= DATAPATH; Persist Security Info=False;"
Dim oledbConn As New OleDbConnection(varConnString)
Dim varSQLString As String
'oledbConn.Open()
varSQLString = "SELECT DISTINCT LEFT(ProductBarcode,13) AS ProductBarcode FROM tblProduct "
varSQLString = varSQLString & " WHERE ProductBarcode LIKE '%" & frmWebUpdate.txtCode.Text & "%' OR Description LIKE '%" & frmWebUpdate.txtCode.Text & "%'"
varSQLString = varSQLString & " ORDER BY LEFT(ProductBarcode,13) "
Dim varCmd As OleDbCommand = New OleDbCommand(varSQLString, oledbConn)
oledbConn.Open()
varCmd.CommandType = CommandType.Text
Dim varNewDA As OleDbDataAdapter = New OleDbDataAdapter
varNewDA.SelectCommand = varCmd
Dim varProductDT As DataTable = New DataTable()
varNewDA.Fill(varProductDT)
dgvProduct.DataSource = varProductDT
So I need some help to create the second nested connection and command as it is done in the VB6 version and then how I would populate the DataGridView correctly.
I was also wondering how I can populate a predefined DataGridView where I have added the Columns and set the Column Properties? This is because when I did that and then ran the above VB.NET code it showed my columns but populated new columns added to the end. Or if I can set the column properties after the DatGridView is populated as I need the columns to be read only.
VB.NET:
Dim dgvPB As New DataGridViewTextBoxColumn
Dim dgvDesc As New DataGridViewTextBoxColumn
'Col 0
dgvPB = New DataGridViewTextBoxColumn
dgvPB.Name = "Product Barcode"
dgvProduct.Columns.Add(dgvPB)
dgvProduct.Columns(0).Width = 130
dgvProduct.Columns(0).FillWeight = 10
dgvProduct.Columns(0).HeaderText = "Product Barcode"
dgvPB.ReadOnly = True
'Col 1
dgvDesc = New DataGridViewTextBoxColumn
dgvDesc.Name = "Description"
dgvProduct.Columns.Add(dgvDesc)
dgvProduct.Columns(1).Width = 250
dgvProduct.Columns(1).FillWeight = 10
dgvProduct.Columns(1).HeaderText = "Description"
dgvDesc.ReadOnly = True
Thanks for any help or suggestions in advance!!!