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...
Logitech fa sul serio: mouse PRO, tastie...
Spotify aumenta ancora il prezzo del ser...
Bose QuietComfort Ultra (2ª Gen) scendon...
ASUS annuncia l'arrivo in Italia di due ...
Apple prepara l'addio al notch su smartp...
Linux cresce grazie all'addio a Windows ...
Forza un ufficio, smonta le memorie dal ...
Bentornati nel 2007: le memorie DDR3 rin...
Stellantis aderisce ad AI4I e Fondazione...
Google Pixel 10a: prime conferme sul pre...
ISRO potrebbe lanciare la capsula Gagany...
Un nuovo leak conferma dimensioni e novi...
Steam Machine: requisiti Verified piu' s...
NVIDIA GeForce RTX 5070 Ti fuori produzi...
Sony ha annunciato i nuovi giochi che en...
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: 09:04.


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