Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111

    [VB.NET] Primo record

    Ciao, sto usando ADO con VB2005Express, e non uso il binding.
    Ho la tabella senza record, e quando creo il dataset mi dà logicamente errore...
    Vorrei sapere come posso fare per effettuare un controllo sull'esistenza di record, ed eventualmente creare il primo.
    (In parole povere: l'equivalente di if rs.BOF and rs.EOF Then rs.AddNew)

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Stai usando gli oggetti ADO, oppure le classi ADO.NET che si interfacciano a OLE DB?

    Al di là delle soluzioni che si possono proporre, eventualmente riporta il codice così è possibile avere un riferimento diretto e tangibile da poter correggere per illustrare come risolvere il problema.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111
    Grazie, francamente non lo so, sto imparando adesso.
    Questa è la stringa di connessione:

    codice:
    Imports System.Data
    Public Class Form1
        Dim inc As Integer
        Dim maxRows As Integer
    
        Dim con As New OleDb.OleDbConnection
        Dim ds As New DataSet
        Dim da As OleDb.OleDbDataAdapter
        Dim sql As String
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
            con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = Database.mdb"
            con.Open()
            MsgBox("La connessione è aperta")
    
            sql = "SELECT ID, FirstName, Surname FROM tblContacts"
            da = New OleDb.OleDbDataAdapter(sql, con)
            da.Fill(ds, "AddressBook")
    
            con.Close()
            MsgBox("La connessione è chiusa")
    
            maxRows = ds.Tables("Database").Rows.Count
            inc = 0
    
            txtNomeText = ds.Tables("Database").Rows(inc).Item(1)
            txtCognome.Text = ds.Tables("Database").Rows(inc).Item(2)
    Mentre per l'update:

    codice:
            If inc <> -1 Then
                Dim cb As New OleDb.OleDbCommandBuilder(da)
                Dim dsNewRow As DataRow
                dsNewRow = ds.Tables("Database").NewRow()
                dsNewRow.Item("Nome") = txtNome.Text
                dsNewRow.Item("Cognome") = txtCognome.Text
                ds.Tables("Database").Rows.Add(dsNewRow)
                da.Update(ds, "Database")
                MsgBox("Aggiunto nuovo record")
            End if

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Se riempi un DataSet con i record presenti in una tabella, ti basterà verificare che il primo oggetto DataTable dell'insieme Tables contenga almeno una riga, condizione verificabile facilmente dalla proprietà Rows.Count dell'oggetto DataTable.

    Se, invece, vuoi ottenere direttamente il numero di record presenti dal database, puoi tranquillamente fare a meno del DataSet, inutile spreco in questo caso, e usare un Command (OleDbCommand, nel tuo caso) con una query del tipo
    codice:
    SELECT COUNT(CampoChiave) FROM NomeTabella
    e invocando il metodo ExecuteScalar per ottenere direttamente il valore del primo campo, del primo record individuato, che è esattamente il conteggio dei record che cerchi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111
    Già! E' vero, lo sai che non avevo pensato a Rows.Count?
    Non volevo usare i comandi SQL, quelli già li conosco.
    Ti faccio sapere se ho dei problemi.
    Grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111
    Fatto!
    Non è stato un problema...
    Vorrei sapere una cosa, mi hai messo una pulce nell'orecchio:
    Sto usando gli oggetti ADO, oppure le classi ADO.NET che si interfacciano a OLE DB?
    Immagino che la risposta che mi darai sarà la prima.
    In questo caso: cos'è la seconda?

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da Stibbert
    Non volevo usare i comandi SQL, quelli già li conosco.
    Ma in questo caso sarebbe la soluzione più logica.

    Originariamente inviato da Stibbert
    Sto usando gli oggetti ADO, oppure le classi ADO.NET che si interfacciano a OLE DB?
    Immagino che la risposta che mi darai sarà la prima.
    In questo caso: cos'è la seconda?
    No, stai usando la seconda. Usi classi .NET, che a loro volta fanno riferimento (tramite i servizi di P/Invoke) alla libreria nativa OLE DB e ai relativi oggetti COM.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    111
    Grazie, ora me le studio...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.