Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
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


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...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
AMD: l'alternativa al DLSS 5 sarebbe in ...
Canon EOS R8 Mark II: sensore da 24,2 MP...
Alla Napoli Shipping Week 2026 arriva il...
Addio bollo: il Governo cancella la tass...
Speciale Logitech G: mouse PRO X SUPERLI...
Cosa pensano Altman, Amodei, Benioff e H...
Microsoft: evento il 7 ottobre dedicato ...
Scoperti 84 corpi cosmici anomali: cosa ...
Dimensity 9600 Pro contro A20 Pro, il nu...
HillMiles MileCity1 torna a 648,99€: e-b...
Enel Mobile, il debutto è sempre ...
Nuova rimodulazione per il fisso di TIM ...
iPhone 18 Pro e Pro Max, preordini sotto...
Ha craccato 26 giochi: ora Denuvo vuole ...
Xiaomi 18 Pro, il lancio è uffici...
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: 17:47.


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