Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-03-2011, 14:55   #1
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
[VB] Query con variabile

Salve,
con Visual Studio sto creando una semplice applicazione ma ho un problema con una query.

Ho creato questo con il "Generatore di query" :
Codice:
SELECT        ID, [data inizio_fase], fase, periodo_durata, [output], verifichea, verificheb, verifichec, fine_fase, esecutore, fr_id
FROM            sviluppo
WHERE        (fr_id = 2)
ma vorrei che il 2 fosse sostituito con una variabile globale che ho cosi dichiarato in un modulo:
Codice:
Module Module1
    Public key As Integer
End Module
Qualcuno sa come aiutarmi?
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2011, 15:04   #2
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Ciao presumo che sia VB.NET con DB access se mi sbaglio correggimi..la prossima volta specifica il linguaggio e il db che usi comunque da vb.net puoi eseguire la query così:
Codice:
Dim sql as string

sql="SELECT ID, [data inizio_fase], fase, periodo_durata, [output],verifichea, verificheb, verifichec, fine_fase, esecutore, fr_id " & _
"FROM sviluppo " & _
"WHERE fr_id = " & key
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2011, 15:10   #3
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
Ciao presumo che sia VB.NET con DB access se mi sbaglio correggimi..la prossima volta specifica il linguaggio e il db che usi comunque da vb.net puoi eseguire la query così:
Codice:
Dim sql as string

sql="SELECT ID, [data inizio_fase], fase, periodo_durata, [output],verifichea, verificheb, verifichec, fine_fase, esecutore, fr_id " & _
"FROM sviluppo " & _
"WHERE fr_id = " & key
Ora provo.

P.S. Hai ragione, è VB.NET con DB Access.
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2011, 15:31   #4
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Mettendo un punto di interruzione ho visto che la query è corretta ma senza il generatore di query non so come popolare le textbox.
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2011, 15:34   #5
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da Lu Pier Guarda i messaggi
Mettendo un punto di interruzione ho visto che la query è corretta ma senza il generatore di query non so come popolare le textbox.
spiega quello che vuoi fare dalla tua applicazione e posta un pò di codice che utilizzi altrimenti nn posso aiutarti
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2011, 15:43   #6
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
C è poco codice visto che ho fatto la connessione al database access tramite il Wizard di Visual Studio.

Questo è il form



Voglio popolare le textbox alla pressione del tasto in alto "Query"
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2011, 15:55   #7
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
non ho mai utilizzato il wizard di visual studio di solito faccio tutto da codice in questo modo:
Codice:
Module Module1
    'Percorso del DataBase
    Dim PercorsoDB As String = "dati.mdb"

    'Stringa di Connessione
    Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=" & PercorsoDB

    'Connessione alla stringa
    Dim Cn As New OleDbConnection(ConnString)
End Module
Codice:
        dim sql as string

        sql="SELECT ID, [data inizio_fase], fase, periodo_durata,   [output],verifichea, verificheb, verifichec, fine_fase, esecutore, fr_id " & _
        "FROM sviluppo " & _
        "WHERE fr_id = " & key

        Cn.Open() 
        Dim cmd As New OleDbCommand(sql, Cn)

        Dim dr As OleDbDataReader = cmd.ExecuteReader
        dr.Read()
        textbox1.Text = dr.Item("id")
        texbox2.text= dr.Item("data inizio_fase")
        ...
        texbox3.text=dr.item("fr_id")
        dr.Close()
        
        Cn.Close()
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2011, 16:04   #8
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
non ho mai utilizzato il wizard di visual studio di solito faccio tutto da codice in questo modo:
Codice:
Module Module1
    'Percorso del DataBase
    Dim PercorsoDB As String = "dati.mdb"

    'Stringa di Connessione
    Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=" & PercorsoDB

    'Connessione alla stringa
    Dim Cn As New OleDbConnection(ConnString)
End Module
Codice:
        dim sql as string

        sql="SELECT ID, [data inizio_fase], fase, periodo_durata,   [output],verifichea, verificheb, verifichec, fine_fase, esecutore, fr_id " & _
        "FROM sviluppo " & _
        "WHERE fr_id = " & key

        Cn.Open() 
        Dim cmd As New OleDbCommand(sql, Cn)

        Dim dr As OleDbDataReader = cmd.ExecuteReader
        dr.Read()
        textbox1.Text = dr.Item("id")
        texbox2.text= dr.Item("data inizio_fase")
        ...
        texbox3.text=dr.item("fr_id")
        dr.Close()
        
        Cn.Close()
Ho fatto una prova veloce con una textbox è funziona!
Ti ringrazio però ho dichiarato le variabile nel modulo come "public" e non come "dim" perchè diversamente non funzionava.
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 10-03-2011, 20:20   #9
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da Lu Pier Guarda i messaggi
Ho fatto una prova veloce con una textbox è funziona!
Ti ringrazio però ho dichiarato le variabile nel modulo come "public" e non come "dim" perchè diversamente non funzionava.
Se intendi quelle nel modulo si è stata una mia distrazione
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2011, 09:04   #10
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
Se intendi quelle nel modulo si è stata una mia distrazione
e se la query generasse più risultati come li gestisco?
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2011, 11:53   #11
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da Lu Pier Guarda i messaggi
e se la query generasse più risultati come li gestisco?
Semplice utilizzi un ciclo while così però poi devi modificare il codice su dove inserire i dati:
Codice:
        dim sql as string

        sql="SELECT ID, [data inizio_fase], fase, periodo_durata,   [output],verifichea, verificheb, verifichec, fine_fase, esecutore, fr_id " & _
        "FROM sviluppo " & _
        "WHERE fr_id = " & key

        Cn.Open() 
        Dim cmd As New OleDbCommand(sql, Cn)

        Dim dr As OleDbDataReader = cmd.ExecuteReader

        WHILE dr.Read()
            textbox1.Text = dr.Item("id")
            texbox2.text= dr.Item("data inizio_fase")
            ...
            texbox3.text=dr.item("fr_id")
        END WHILE
        dr.Close()
        
        Cn.Close()
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2011, 10:35   #12
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
Codice:
        WHILE dr.Read()
            textbox1.Text = dr.Item("id")
            texbox2.text= dr.Item("data inizio_fase")
            ...
            texbox3.text=dr.item("fr_id")
        END WHILE
        dr.Close()
        
        Cn.Close()
ovviamente così scrive più risultati nella stessa textbox.
Conviene usare un datagrid giusto?
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2011, 10:59   #13
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da Lu Pier Guarda i messaggi
ovviamente così scrive più risultati nella stessa textbox.
Conviene usare un datagrid giusto?
Ovviamente si devi adattarlo alle tue esigenze poi se vuoi visualizzare tutti i risultati in una tabella tipo access utilizza un datagridview dove per popolarlo utilizzi questo codice:
Codice:
Eseguo il Binding tra il DataGridView e il DataSet "DS" ( o DataTable che sia ), precedentemente "fillato" con apposito Adapter "DA" :

Codice:

        DA.Fill(DS)
        DataGridView1.DataSource = DS.Tables(0)
Puoi gestire le operazioni dal DataGridView impostando le proprietà Me.DataGridView1.AllowUserToAddRows = True e Me.DataGridView1.AllowUserToDeleteRows = True.

A questo punto puoi inserire un pulsante unico di "Applica Modifiche", che contiene tutta la gestione di tutte le possibili azioni che un utente può fare su una o anche più righe contemporaneamente, mediante un OleDbCommandBuilder, che esiste proprio per questo :

Codice:
    Private Sub cmd_applica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_applica.Click

        If DS.HasChanges() Then
            Using CB As New OleDb.OleDbCommandBuilder(DA)
                DA.UpdateCommand = CB.GetUpdateCommand
                DA.InsertCommand = CB.GetInsertCommand
                DA.DeleteCommand = CB.GetDeleteCommand
                DA.Update(DS)
            End Using
            DS.AcceptChanges()
            MsgBox("Modifiche Salvate", MsgBoxStyle.Information, "OK")
        End If

    End Sub
E il gioco è fatto : gestisce tutto in un colpo solo ed evita virtualmente ogni problema di refresh e salvataggio nel DB.
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2011, 11:06   #14
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Lunedì quando torno a lavoro provo, per ora non posso che ringraziarti per il grande aiuto che mi stai dando.
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2011, 12:51   #15
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
Codice:
Eseguo il Binding tra il DataGridView e il DataSet "DS" ( o DataTable che sia ), precedentemente "fillato" con apposito Adapter "DA" :

Codice:

        DA.Fill(DS)
        DataGridView1.DataSource = DS.Tables(0)
Non riesco a capire questa parte, dovrò pur dichiarare queste variabile "Da" e "DS" da qualche parte.
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2011, 13:45   #16
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Quote:
Originariamente inviato da Lu Pier Guarda i messaggi
Non riesco a capire questa parte, dovrò pur dichiarare queste variabile "Da" e "DS" da qualche parte.
scusami l'avevo dato per scontato ti basta inserire questo codice nella dichiarazione generale del form :
Codice:
Dim DS As New DataSet 'Variabile DataSet
Dim DA As OleDb.OleDbDataAdapter 'Variabile DataAdapter
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2011, 14:36   #17
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Quote:
Originariamente inviato da jackk87 Guarda i messaggi
scusami l'avevo dato per scontato ti basta inserire questo codice nella dichiarazione generale del form :
Codice:
Dim DS As New DataSet 'Variabile DataSet
Dim DA As OleDb.OleDbDataAdapter 'Variabile DataAdapter
Scusami se sono un somaro!

Codice:
La variabile 'DA' viene utilizzata prima che le sia stato assegnato un valore.
È possibile che venga restituita un'eccezione dovuta a un riferimento con valore null in fase di esecuzione.
Forse dovrei aggiungere qualcosa del genere:
Codice:
DA = New OleDb.OleDbConnection(Cn)
Ma mi segnale questo errore su "DA = New OleDb.OleDbConnection(Cn)" :
Codice:
Impossibile convertire il valore di tipo 'System.Data.OleDb.OleDbConnection' in 'String'.
Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2011, 15:35   #18
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
posta tutto il codice della form che utilizzi così vedo dov'è che hai fatto confusione
jackk87 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2011, 15:42   #19
Lu Pier
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 24
Module:
Codice:
    Public key As Integer
    'Percorso del DataBase
    Public PercorsoDB As String = "C:\Users\Pierpaolo\Documents\Visual Studio 2010\Projects\PSP Engine\PSP Engine\database.mdb"

    'Stringa di Connessione
    Public ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=" & PercorsoDB

    'Connessione alla stringa
    Public Cn As New OleDbConnection(ConnString)
End Module
Form:

Codice:
    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sql As String
        Dim ds As New DataSet 'Variabile DataSet
        Dim da As OleDb.OleDbDataAdapter 'Variabile DataAdapter


        sql = "SELECT ID, [data inizio_fase], fase, periodo_durata,   [output],verifichea, verificheb, verifichec, fine_fase, esecutore, fr_id " & _
        "FROM sviluppo " & _
        "WHERE fr_id = " & key

        Cn.Open()
        da.Fill(ds)
        DataGridView1.DataSource = ds.Tables(0)


        Cn.Close()
    End Sub
Errore:

Lu Pier è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2011, 17:18   #20
jackk87
Senior Member
 
Iscritto dal: Jan 2007
Messaggi: 404
Il codice del modulo va bene mentre quello del form devi modificarlo così:
Codice:
Public Class Form3
    Dim ds As New DataSet 'Variabile DataSet
    Dim da As OleDb.OleDbDataAdapter 'Variabile DataAdapter

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sql As String

        sql = "SELECT ID, [data inizio_fase], fase, periodo_durata,   [output],verifichea, verificheb, verifichec, fine_fase, esecutore, fr_id " & _
        "FROM sviluppo " & _
        "WHERE fr_id = " & key

        Cn.Open()

        'Dataset
        DS = New DataSet("sviluppo")
        'DataAdapter
        DA = New OleDb.OleDbDataAdapter(sql, Cn)
        DA.Fill(DS, "sviluppo")

        DataGridView1.DataSource = DS.Tables(0)

        Cn.Close()
    End Sub
End Class
se avrai un button che ti gestisce tutte le modifiche fatte alla tabella:
Codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If DS.HasChanges() Then
            Using CB As New OleDb.OleDbCommandBuilder(DA)
                DA.UpdateCommand = CB.GetUpdateCommand
                DA.InsertCommand = CB.GetInsertCommand
                DA.DeleteCommand = CB.GetDeleteCommand
                Try
                    DA.Update(DS, "impegno")
                Catch ex As Exception
                    MsgBox(ex.Message)
                    Exit Sub
                End Try

            End Using
            DS.AcceptChanges()
            MsgBox("Modifiche Salvate", MsgBoxStyle.Information, "OK")
        End If

    End Sub
jackk87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Modificare il nuovo indirizzo Gmail è fi...
TV 4K in offerta su Amazon: QLED Hisense...
Tesla ha ora la sua raffineria di litio:...
Ancora aumenti per Fastweb: nuove condiz...
GeForce RTX 5070 Ti: intervengono ASUS e...
Xiaomi Redmi Note 15 Pro subito giù di p...
SiFive adotta NVLink Fusion: RISC-V si i...
Amazon ha annunciato la fine di New Worl...
Umidità addio: deumidificatori el...
Konami festeggia 950 milioni di download...
Modelli gen AI sul tuo Raspberry Pi? Con...
Il CEO di Nothing, Carl Pei, avverte: i ...
Serie A, richieste di risarcimento agli ...
Ferrari e Shell fanno una scelta che nes...
Fanatec svela Podium DD: 25 Nm di coppia...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:44.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v