Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-03-2011, 13: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, 14: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, 14: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, 14: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, 14: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, 14: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, 14: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, 15: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, 19: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, 08: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, 10: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, 09: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, 09: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, 10: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, 11: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, 12: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, 13: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, 14: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, 14: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, 16: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


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Denza Z9S: la berlina elettrica con il r...
Valve abilita i driver e il supporto all...
Terafab, il progetto di Musk finisce in ...
Il meglio di Amazon in 42 articoli: sono...
ECOVACS WINBOT W2 PRO OMNI a 349€: ecco ...
Samsung Gallery Cloud Sync introduce il ...
Dyson V8 Cyclone a 249€: scopa elettrica...
Rifiuti elettronici, l'altra faccia dell...
Meta prepara Luna, i nuovi occhiali smar...
SSD NVMe Gen4 2TB in offerta: Acer Preda...
Perché i backup non bastano pi&ug...
Maserati, si concretizza la pista cinese...
Corea del Sud preoccupata: le cinesi YMT...
Se ne vendono 3000 al mese su Amazon: Sm...
Sedie gaming ergonomiche su Amazon: SONG...
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:09.


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