Solved

crossover from vb6 to vb.net - 4 questions on recordsets & databases - how do i do it in .net

Posted on 2003-11-26
3
353 Views
Last Modified: 2008-03-17
basic recordsets & recordsets update from vb6 to vb.net help needed


good day
i am an vb6 user and i want to make the cross over to vb.net
i am scared
could someone please help me with this because it will save me loads of time & frustration,
i think a lot of people in the future will gain from this

all the following code is from VB6sp5,using access 2000

this is how i connect to an access database:
____________________________________________
Private oConn As ADODB.Connection
Set oConn = New ADODB.Connection
'Assign the connection string
  oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=.\tapeus.mdb;" & _
           "User ID=admin;" & _
           "Password=;"


this is how i set & open the recordset from the database i connected to
_______________________________________________________________________
    SQLQ = "SELECT * FROM PRODUCTS"
    Dim rsProducts As New ADODB.Recordset
    rsProducts.Open SQLQ, oConn, adOpenStatic, adLockBatchOptimistic, adCmdText


this is how i set the values from a recordset into a listview
_____________________________________________________________
      for i = 1 to rsproducts.recordcount
             Set li = ListView1.ListItems.Add(i, , rsProducts![TableName])
               rsProducts.MoveNext
      next i


and this is how i updated the database from user input
______________________________________________________
 AddCust.Open SQLQ, oConn, adOpenDynamic, adLockOptimistic, adCmdText
        AddCust.AddNew
            AddCust![CustomerSurname] = txt1.Text
        AddCust.Update


could someone give me this in vb.net code,
obviously just "skeleton code" if i may call it that.
i havent tried but i heard of some people having big problems connecting via vb.net  

0
Comment
Question by:jxharding
  • 3
3 Comments
 
LVL 12

Expert Comment

by:roverm
ID: 9825004
You can use a general function:

    Public Function ReadDataSet(ByVal strSQL As String, Optional ByVal NothingWhenEmpty As Boolean = True) As DataSet
        Try
            Dim objDA As New SqlDataAdapter(strSQL, strConnection)
            Dim objDS As New DataSet
            objDA.Fill(objDS)

            If (objDS.Tables.Count > 0 AndAlso objDS.Tables(0).Rows.Count > 0) Or (Not NothingAlsLeeg) Then
                Return objDS
            Else
                Return Nothing
            End If
        Catch ex As Exception
            MsgBox ex.Message
            Return Nothing
        End Try
    End Function

(You need to set the strConnection variable yourself. It's the same as in VB6.)

Then declare a dataset for general use:

Dim ds As DataSet

Then to read a 'recordset' = dataset:

ds = ReadDataSet("select * from mytable")

Nothing will be returned if no records are found.

I would recommend to use a datagrid to show all data. Simpy bind to it:

DataGrid1.DataSource = ds

That's ALL! ;-)

To add a new record to the db, use this function:

    Public Function ExecuteStatement(ByVal strSQL As String) As Int32
        Dim intRecCount As Int32 = -1
        Try
            Dim objConn As New OleDBConnection(strConnection)
            objConn.Open()
            Dim objCommand As New OleDBCommand
            With objCommand
                .CommandType = CommandType.Text
                .CommandText = strSQL
                .Connection = objConn
                intRecCount = .ExecuteNonQuery()
            End With
            objConn.Close()
            Return intRecCount
        Catch ex As Exception
            MsgBox ex.Message
            Return -1
        End Try
    End Function

To insert:

MsgBox ExecuteStatement("insert into mytable (idfield) values 1")

The returned value is the number of affected records.

D'Mzz!
RoverM
0
 
LVL 12

Accepted Solution

by:
roverm earned 250 total points
ID: 9825009
Whoops, change this line:
            If (objDS.Tables.Count > 0 AndAlso objDS.Tables(0).Rows.Count > 0) Or (Not NothingAlsLeeg) Then

To

            If (objDS.Tables.Count > 0 AndAlso objDS.Tables(0).Rows.Count > 0) Or (Not NothingWhenEmpty) Then
0
 
LVL 12

Expert Comment

by:roverm
ID: 9836380
Thanks!
0

Featured Post

The New “Normal” in Modern Enterprise Operations

DevOps for the modern enterprise offers many benefits — increased agility, productivity, and more, but digital transformation isn’t easy, especially if you’re not addressing the right issues. Register for the webinar to dive into the “new normal” for enterprise modern ops.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question