Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
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


Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
Intel brevetta XBM: la nuova memoria pun...
Film prodotti con l'IA: Disney, insieme ...
Reinstallare Windows senza chiavette o s...
Apple racconta il suo vantaggio nell'AI ...
Cisco Cloud Control, una cabina di regia...
Il software che controlla le Fab va in p...
Il settore tech è il primo bersag...
Windows 11, corretto un bug che poteva o...
X introduce nuove funzioni per i video c...
Blue Origin sta costruendo diversi lande...
DeepSeek avvia lo sviluppo di un chip pr...
Le offerte migliori ora su Amazon sugli ...
Fino a un petabit al secondo! Il piano d...
Cisco punta tutto sull'IA: tutti i 90.00...
Intel Nova Lake riporterà il supp...
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: 21:15.


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