Domanda Visual Studio 2019 VB.Net Visualizzare alla TextBox la data ridotta e Cerca Voce.

Pacifico437

Utente abituale
17 Novembre 2015
685
16
82
Bari
Office 2010
5
Gent.mi,
nuovamente sono a chiedere la risoluzione di due problematiche.

in un DGV con 3 colonne: (Voce, Mese, Data)
Alla colonna Data è visualizzata la data ridotta: (dd/mm/yyyy) con il seguente codice (grazie a Patel).
Visual Basic:
DataGridView1.Columns(3).DefaultCellStyle.Format = "dd/MM/yyyy"
cliccando su un campo della DataGridView le voci della riga vengono visualizzate nelle TextBox.
Il codice per lo spostamento dati è inserito:
Visual Basic:
Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
index = e.RowIndex
        Dim selectedrow As DataGridViewRow
        selectedrow = DataGridView1.Rows(index)
        TxtVoce.Text = selectedrow.Cells(0).Value.ToString()
        TxtMese.Text = selectedrow.Cells(1).Value.ToString()
        TxtData.Text = selectedrow.Cells(2).Value.ToString()
Alla TxtData anzichè avere la data ridotta (dd/mm/yyyy) si ha la data estesa: (martedi/04/febbraio/2020).
Ho provato con format con esito negativo.

ho la funzione cerca voce e mi esce il seguente errore:
Impossibile eseguire l'operazione "Like" su System.DateTime e System.String.
Il codice:
Visual Basic:
On Error GoTo SearchErr
        If TxtTrova.Text = "" Then
            Call notFound()
            Exit Sub
        Else
            ProvaBindingSource.Filter = "(Voce LIKE '" & TxtTrova.Text & "') OR (Mese LIKE '" & TxtTrova.Text & "')" &
                "OR (Data LIKE '" & TxtTrova.Text & "')
            If ProvaBindingSource.Count <> 0 Then
                With DataGridView1
                    .DataSource = ProvaBindingSource
                End With
            Else
                Dim cantFind As String = TxtTrova.Text
                MsgBox("-->                   " & cantFind & vbNewLine & vbCrLf & vbCrLf &
                               "L'elemento di ricerca non è stato trovato.",
                    MsgBoxStyle.Information, "                                        Avviso!")
                TxtTrova.Text = ""
                TxtTrova.Focus()
                ProvaBindingSource.Filter = Nothing
                With DataGridView1
                    .ClearSelection()
                    .ReadOnly = True
                    .MultiSelect = False
                    .DataSource = ProvaBindingSource
                End With
            End If
        End If
ErrExit:
        Exit Sub
SearchErr:
        MsgBox("Numero errore " & Err.Number & vbNewLine &
                       "Descrizione dell'errore " & Err.Description, MsgBoxStyle.Critical,
                       "Errore di ripristino!")
        Resume ErrExit
Anticipatamente ringrazio e fiducioso di un gradito intervento, saluto.
Domenico.
 

Pacifico437

Utente abituale
17 Novembre 2015
685
16
82
Bari
Office 2010
5
Gent.mo Patel,
ringrazio, al Database di access è in formato date, regolarmente leggo i dati e alla colonna del DGV la data è in formato ridotta (dd/mm/yyyy).
Cliccando su una riga del DataGridView le voci vengono visualizzate nelle TextBox e viene visualizzato in formato data estesa.
Non ci sarebbe un modo per convertire sulla TextBox da estesa a ridotta? Cosa suggerisci?
Fiducioso, saluto.
Domenico.
 

patel

Utente assiduo
25 Marzo 2016
1.437
38
74
Livorno
2010
4
non si avvia, comunque prova così
Visual Basic:
    Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        If e.ColumnIndex = 2 Then TextData.Text = Format(CDate(TextData.Text), "dd/MM/yyyy")
    End Sub
 

Pacifico437

Utente abituale
17 Novembre 2015
685
16
82
Bari
Office 2010
5
Gent.mo,
mi è nuovo non ho problema per l'avvio.
Ho inserito il codice e purtroppo ho sempre la data estesa nella TextBox.
 

patel

Utente assiduo
25 Marzo 2016
1.437
38
74
Livorno
2010
4
Tu insisti ad usare dabase collegati alla dgv tramite wizard e non tramite codice tuo, quindi no è facile capire dove sta il problema, ti posso dire soltanto che il mio suggerimento funziona nei miei programmi
 

Pacifico437

Utente abituale
17 Novembre 2015
685
16
82
Bari
Office 2010
5
Gent.mo,
visto il problema una gentilezza se ritieni opportuno, puoi modificare il codice?
Scusa se approfitto.
Nel ringraziarti, saluto.
 

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
25.156
1.865
Como
2011MAC 2016WIN
585
Ciao e un saluto a patel @patel
Ho provato anch'io a aprire il file allegato ma mi restituisce il seguente errore:

 

Pacifico437

Utente abituale
17 Novembre 2015
685
16
82
Bari
Office 2010
5
Gent.mo Patel e Ges,
non comprendo il motivo apro regolarmente. Ho usato anche il file zippato che ho inviato.
Dietro consiglio di Patel, ho rifatto il programmino senza Dataset. Sono riuscito a popolare il DGV con il seguente codice:
Visual Basic:
DataGridView1.Rows.Add(Me.TxtVoce.Text, Me.TxtMese.Text, Me.TxtData.Text)
I dati vengono inseriti regolarmente compreso la data ridotta su DGV e viceversa da DGV alla TextBox.
Non riesco a salvare i dati da DGV in Access e relativa lettura da Access in DGV.
Riesco a salvare i dati dalle TextBox in Access con il seguente codice:
Visual Basic:
Dim dbcomm As OleDbCommand = dbconn.CreateCommand
        dbconn.open()
        dbcomm.CommandType = CommandType.Text
        dbcomm.CommandText = "Insert into Tabella (Voce, Mese, Data) values (?, ?, ?)"
        dbcomm.Parameters.Add("@Voce", OleDbType.Char, 50).Value = TxtVoce.Text
        dbcomm.Parameters.Add("@Mese", OleDbType.Char, 50).Value = TxtMese.Text
        dbcomm.Parameters.Add("@Data", OleDbType.Char, 50).Value = TxtData.Text
        TxtVoce.Clear()
        TxtMese.Clear()
        TxtData.Clear()
        TxtVoce.Focus()
        dbcomm.ExecuteNonQuery()
        dbconn.close()
Se gentilmente potete fornire il codice per il salvataggio dati da DataGridView in Access e relativa lettura dati.
Ringrazio della disponibilità, saluto.
Domenico.
 

patel

Utente assiduo
25 Marzo 2016
1.437
38
74
Livorno
2010
4
un modo molto semplice per leggere il db nella dgv e salvare le modifiche fatte direttamente nella dgv è usare l'oggetto CommandBuilder.
Quando inserisci nel form la dgv non collegarla all'origine dati. Il file mdb è nella cartella Debug.
Visual Basic:
Imports System.Data.OleDb

Public Class Form1
    Dim connStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Tabella.mdb"
    Dim Conn As OleDbConnection
    Dim Adapter As OleDbDataAdapter
    Dim tabella As String = "Tabella"
    Dim Ds As DataSet = New DataSet

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Conn = New OleDbConnection(connStr)
        Dim sSQL As String = "SELECT * FROM " & tabella
        Dim Cmd As New OleDbCommand(sSQL, Conn)
        Adapter = New OleDbDataAdapter(Cmd)
        Dim CB As New OleDbCommandBuilder(Adapter)

        Adapter.Fill(Ds, tabella)
        DataGridView1.DataSource = Ds.Tables(tabella)
    End Sub

    ' ----- SALVA MODIFICHE ---
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Adapter.Update(Ds, tabella)
    End Sub
End Class
 

Pacifico437

Utente abituale
17 Novembre 2015
685
16
82
Bari
Office 2010
5
Gent.mo Patel,
ringrazio e sono rammaricato che purtroppo non riesco.
Se il codice:
Visual Basic:
DatagridView1.DataSource = Ds.Tables(Tabella)
è inserito, esce l'errore: Impossibile aggiungere righe a livello di codice....
diversamente se inserisco la spunta, inserisco regolarmente le voci dalle TextBox al DGV e non riesco a salvare.
Invio il file zippato se gentilmente, tempo permettendo, puoi visionare e correggere e per ultimare la parte leggere i dati da Access a DGV.
Grato di tutto ciò, fiducioso, saluto.
Domenico.
 

Allegati

patel

Utente assiduo
25 Marzo 2016
1.437
38
74
Livorno
2010
4
non ci siamo capiti, col mio codice leggi il db nella dgv e le modifiche le fai direttamente nelle celle della dgv senza usare le textbox.
 

Pacifico437

Utente abituale
17 Novembre 2015
685
16
82
Bari
Office 2010
5
Gent.mo Patel,
Perfettamente hai ragione non ho compreso e mi scuso.
L'ultimo ostacolo è il problema inserimento voci che con il codice attuale non funziona.
Visual Basic:
DataGridView1.Rows.Add(Me.TxtVoce.Text, Me.TxtMese.Text, Me.TxtData.Text).
Grazie per la disponibilità e pazienza, saluto.
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!