Selezione in un datagrid

di il
29 risposte

29 Risposte - Pagina 2

  • Re: Selezione in un datagrid

    Ciao loris è un pò ke non mi facevo sentire ma sono stato impegnato.
    solo oggi ho potuto lavorare un pò e funziona tutto bene e per questo volevo ringraziarti.
    Solo una cosa...quando seleziono l'elemento dalla griglia e do l'ok i campi si riempiono ma la form col datagrid dovrebbe chiudersi invece non lo fa si kiude dopo la seconda/terza volta ke clikko
    boh sapresti dirmi cos'è?
    ciao
  • Re: Selezione in un datagrid

    Ciao East,
    hai inserito l'istruzione Me.Close negli eventi dei bottoni?.
    Ciao.

    Loris
  • Re: Selezione in un datagrid

    Si ma ho l'impressione ke si chiuda ma se ne apra un'altra...
    poi se clikko di nuovo si kiude e i campi sono riempiti
  • Re: Selezione in un datagrid

    Ciao East,
    se vuoi inviarmi la parte di codice che gestisce l'apertura e la chiusura delle form, tra sabato e domenica cerco di ritagliare 10 min per capirci qualcosa.
    Ciao.

    Loris
  • Re: Selezione in un datagrid

    Ciao loris rieccomi dopo una "breve" pausa, con un altro cruccio...seguendo il mio manuale volevo creare una routine per salvare nuovi record nel db ma non funziona...il codice è questo:



    Private Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click
    Try
    Dim nuovaRiga As DataRow = DsLibro1.TabLibri.NewRow
    nuovaRiga("Prefisso") = CmbPref.Text
    nuovaRiga("Codice") = txtCodice.Text
    nuovaRiga("Descrizione") = txtDescr.Text
    DsLibro1.TabLibri.Rows.Add(nuovaRiga)
    Catch exc As Exception
    MessageBox.Show("Impossibile aggiungere il record." & ControlChars.NewLine & exc.Message, "TabLibri")
    End Try<font color=green></font id=green>

    ci capisci qualcosa?
  • Re: Selezione in un datagrid

    Ciao East,
    la tua routine da quello che vedo inserisce la nuova riga solo nella tabella 'in memoria' (ossia su TabLibri) ma non esegue nessuna scrittura sul db.
    Supponiamo quindi che tu abbia una connessione al db chiamata CntDb e la tabella fisica sul db chiamata TabLibri, la routine diverrà :
    Try
    Dim nuovaRiga As DataRow = DsLibro1.TabLibri.NewRow
    Dim StrSql As String
    Dim CmdSql As SqlCommand
    ...
    DsLibro1.TabLibri.Rows.Add(nuovaRiga)
    StrSql = "Insert Into TabLibri (Prefisso, Codice, Descrizione) " & _
    "Values (@Prefisso, @Codice, @Descrizione)"
    SqlCmd = New SqlCommand()
    SqlCmd.Connection = CntDb
    SqlCmd.CommandTimeout = 0
    SqlCmd.CommandText = StrSql
    SqlCmd.Parameters.Add("@Prefisso",SqlDbType.Varchar,n).value = nuovaRiga("Prefisso")
    SqlCmd.Parameters.Add("@Codice",SqlDbType.Varchar,n).value = nuovaRiga("Codice")
    SqlCmd.Parameters.Add("@Descrizione",SqlDbType.Varchar,n).value = nuovaRiga("Descrizione")
    SqlCmd.ExecuteNonQuery()
    Catch
    ...
    End Try

    Dove:
    CntDb: è la connessione al database che ho supposto essere di tipo Sql
    SqlDbType.Varchar,n: è il tipo della colonna della tabella (in questo caso varchar ma potrebbe essere char, float, ...) e n specifica la lunghezza in caratteri nel caso si trattasse di varchar o char.

    Prova e sappimi dire.
    Ciao.





    Loris
  • Re: Selezione in un datagrid

    La mia non è una connessione di tipo sql
    l'ho creata con OleDbConnection
  • Re: Selezione in un datagrid

    Non cambia nulla a livello concettuale. Verifica solo che la parte relativa ai parametri del comando Sql (che potresti chiamare OleDbCmd) di insert accetti la definizione del tipo della colonna (SqlDbType.Varchar,n). In alternativa potresti scrivere:
    OleDbCmd.Parameters.Add("@Prefisso").value = nuovaRiga("Prefisso")

    (vado un po' a naso perchè è molto che non uso OleDb).
    Ciao.

    Loris
  • Re: Selezione in un datagrid

    Il problema è qui:
    Dim CmdSql As SqlCommand
    se sostituisco con OleDbCommand non lo accetta...
    accetta OleDb{} ma vuole dei parametri
  • Re: Selezione in un datagrid

    Loris ho risolto...
    bastava aggiungere il metodo Update nella routine...
    Grazie lo stesso ci sentiremo presto ciao
  • Re: Selezione in un datagrid

    Ciao loris come detto eccomi con un nuovo cruccio..
    voglio capire come aggiornare un record in un database..
    praticamente ho una form in cui effettuo una ricerca per un parametro e tutti i restanti textbox si riempiono dei giusti elementi...a questo punto voglio poter modificare tale record..suggerimenti?
  • Re: Selezione in un datagrid

    Ciao East,
    potresti utilizzare il metodo Update del DataAdpter oppure definirti un OleDbCommand alla cui proprietà CommanText associ la tua stringa Sql di update (un po' come ti avevo suggerito per l'inserimento).
    Ciao

    Loris
  • Re: Selezione in un datagrid

    Ho provato col metodo adapter utilizzando la stessa routine ke ho usato per aggiungere nuovi elementi..ovviamente non mi permette di creare un altro elemento con lo stesso codice visto ke è univoco...quindi io dovrei aprire quel determinato record e una volta effettuate le modifiche sovrascriverlo...ma come faccio?
    Ho provato così:
    Dim NumRecord As Integer = Me.BindingContext(DsSchede1, "TabSchede").Position
    Dim CurrentRow As DataRow = DsSchede1.TabSchede.Rows(NumRecord)

    "così ottengo la riga ke ho cercato"
    poi setto i vari campi del db leggendo nei textbox
    a questo punto se uso:

    DsSchede1.TabSchede.Rows.Add(CurrentRow)
    mi da l'errore perkè il record già esiste...allora ke metodo uso?
    Spero sia kiaro
  • Re: Selezione in un datagrid

    Ciao East,
    è giusto che ti dia errore perchè cerchi di aggiungere un rk già esistente. Quindi dopo aver trovato la riga (il rk) interessato dovrai fare:
    CurrentRow.Item("TuaColonna1") = TuoTextBox1.Text
    CurrentRow.Item("TuaColonna2") = TuoTextBox2.Text
    ...
    così da aggiornare il dataset.
    Ciao.

    Loris
  • Re: Selezione in un datagrid

    Vedi loris ho notato ke l'errore sta nell'individuazione della riga...ti spiego
    io effettuo una ricerca per titolo e ottengo tuttti i risultati nei rispettivi textbox,poi clikko sul pulsante modifica per sbloccare i campi in modo a poterli modificare e una volta modificati clikko su salva....però se eseguo questo:

    Dim NumRecord As Integer = Me.BindingContext(DsSchede1, "TabSchede").Position

    Dim newRow As DataRow = DsSchede1.TabSchede.Rows(NumRecord)
    nella routine del pulsante salva non credo funzioni
    infati mi dice ke non può effettuare la modifica su una riga inesistente..
    come faccio allora ad individuare la riga?
Devi accedere o registrarti per scrivere nel forum
29 risposte