Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Creare un record con con Visual Basic2008 (o VB.net)
Forum - C# / VB.NET - Creare un record con con Visual Basic2008 (o VB.net)

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
ezeta64 (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/11/2009

Segnala al moderatore
Postato alle 13:18
Giovedì, 12/11/2009
Scusate, ma sono alle prime armi con Visual Basic 2008 (programmavo una ventina di anni fa con quick basic 7 e poi ho fatto dell'altro...), ho imparato a destreggiarmi con i vari controlli, textbox, label, cicli, gestione eventi, però vorrei che qualcuno mi inidicasse come creare con questo linguaggio una struttura tipo record tipica del vecchio qbasic, senza doverla per forza importare da un database Access. Per dirla in breve ho visto che il comando "TYPE" che serviva appunto a quello non è più accettato in vb2008, ma se io voglio costruirmi un classico record con i soliti campi "Nome", "Cognome" e così via, come faccio???:-?:)

Ultima modifica effettuata da ezeta64 il 12/11/2009 alle 13:20
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:14
Giovedì, 12/11/2009
Penso tu ti stia riferendo alle strutture:
Codice sorgente - presumibilmente VB.NET

  1. Structure Contatto
  2.   Dim Nome, Cognome As String
  3. End Structure


Tuttavia, in .NET, la gestione dei database si basa sull'utilizzo di classi, e non di strutture, per la manipolazione dei record. Quando colleghi un database all'applicazione mediante il wizard di VS, esso crea delle nuove classi per rappresentare i record. Allo stesso modo, se ti interfacci col database usando la nuova tecnologia di LINQ, dovrai comunque rappresentare le relazioni con classi. Cerca ADO.NET per maggiori informazioni.

Ultima modifica effettuata da Il Totem il 12/11/2009 alle 15:15
PM Quote
Avatar
ezeta64 (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/11/2009

Segnala al moderatore
Postato alle 15:42
Giovedì, 12/11/2009
grazie, ma una classe la posso creare anche senza importare un db Access? vale a dire non mi posso creare una o più classi e gestirla(INSERIMENTO, VARIAZIONE, CANCELLAZIONE...) direttamente da Visual Basic? Se sì con che istruzioni?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:47
Giovedì, 12/11/2009
Penso tu debba reiniziare da 0 con la programmazione ad oggetti, perchè è tutta un'altra storia.
http://totem.altervista.org/dueguide.php
A breve sarà pubblicata la nuova versione della sezione A...

PM Quote
Avatar
ezeta64 (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/11/2009

Segnala al moderatore
Postato alle 12:46
Sabato, 14/11/2009
Ho seguito il tuo prezioso e logico consiglio e ho iniziato a studiare..
Mi sono creato un database Access di prova chiamato test e ho creato una tabella "Clienti" coi soli campi "Cognome e "Nome" tanto per provare un po'..
Ho letto la teoria su DataSet, DataAdapter, OLEDB e chi ne ha più ne metta...
Ho scritto questo:
------------------------------------------
Imports System.Data
Imports System.Data.OleDb

Public Class Form1
    'connessione al database
    Dim clientiConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\clienti\test.accdb"
    Dim cn As New OleDbConnection(clientiConn)
    'comando SQL per il recupero dei dati
    Dim sql As String = "SELECT IDCliente, Cognome, Nome FROM Clienti ORDER BY Cognome"
    Dim cmd = New OleDbCommand(Sql, cn)
  
    Dim da As New OleDbDataAdapter()
    Dim dsClienti As New DataSet

    Private Sub btnImporta_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImporta.Click
        ' assegna il comando al DataAdapter
        da.SelectCommand = cmd

        ' apre la connessione
        cn.Open()

        ' copia anche le chiavi
        da.MissingSchemaAction = MissingSchemaAction.AddWithKey

        dsClienti.Clear()
        da.Fill(dsClienti, "Clienti")
    End Sub
End Class
---------------------------------------------------
Quando lo eseguo e arriva all'istruzione da.Fill(dsClienti,"Clienti") mi dà l'errore
No value given for one or more required parameters.

Cos'ho sbagliato?
Se vale il detto "Chi ben comincia..." sono ben preso!!!

Ultima modifica effettuata da ezeta64 il 14/11/2009 alle 12:55
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:48
Sabato, 14/11/2009
L'errore deriva dalla query. Penso che tu abbia sbagliato a scrivere uno o più campi: ricontrolla e presta attenzione alle minuscole/maiuscole (e che sia il database giusto).

PM Quote
Avatar
ezeta64 (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/11/2009

Segnala al moderatore
Postato alle 18:19
Lunedì, 16/11/2009
Infatti, avevo sbagliato il campo ID..
Ho poi aggiunto un textButton per inserire nuovi record nel dataset e poi aggiornare il database Access. Effettivamente mi inserisce i nuovi dati nel dataset, ma non mi aggiorna il file Access senza peraltro darmi alcun errore....
Cosa sbaglio????:nono:

----------------------------------------------------
Private Sub btnNuovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuovo.Click
        cn = New OleDbConnection(clientiConn)
        sql = "SELECT * FROM Clienti"
        Dim cmd As New OleDbCommand(sql, cn)
        da.SelectCommand = cmd
        ' apre la connessione
        cn.Open()
        ' copia anche le chiavi
        da.MissingSchemaAction = MissingSchemaAction.AddWithKey
        ds = New DataSet("Clienti")

        ds.Clear()
        da.Fill(ds, "Clienti")

        Dim dr As DataRow = ds.Tables("Clienti").NewRow
    
        'indice ultima riga
        Dim r As Integer = ds.Tables("Clienti").Rows.Count

        dr("ID") = r + 1
        dr("Cognome") = txtCognome.Text
        dr("Nome") = txtNome.Text

        ds.Tables("Clienti").Rows.Add(dr)
        ds.Tables("Clienti").AcceptChanges()

        Dim cmdBuild As New OleDbCommandBuilder(da)
        da.UpdateCommand = cmdBuild.GetUpdateCommand

        txtCognome.Clear()
        txtNome.Clear()
    End Sub
---------------------------------------------------------------

Ultima modifica effettuata da ezeta64 il 17/11/2009 alle 16:28
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:22
Martedì, 17/11/2009
Devi dire all'adapter di eseguire l'aggiornamento dei dati del database sulla base del dataset:
http://msdn.microsoft.com/it-it/library/at8a576f.aspx

PM Quote
Avatar
ezeta64 (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/11/2009

Segnala al moderatore
Postato alle 17:47
Martedì, 17/11/2009
Ma questo non vabene??
        
        Dim cmdBuild As New OleDbCommandBuilder(da)
        da.UpdateCommand = cmdBuild.GetUpdateCommand

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo