none
formattazione data base excel RRS feed

  • Discussione generale

  • in una applicazione visual studio 2019 utilizzo come data base Excel (Office2016)

    per inserire nuovi dati utilizzo l'istruzione "insert Into"che funziona correttamente.

    Da alcuni giorni sono presenti alcuni incovenienti:

    1 non sempre il nuovo record vine inserito nella prima riga libera dello sheet

    2 l'ultimo inseriemento non rispetta la formattazione creata ad inizio sullo sheet

    l'applicazione negli anni addietro e fino al mese di maggio corrente funzionava senza i problemi segnalati

    avanzo dei sospetti ma non ho le prove:c'entra qualche aggiornamento windows 10 64 bit? oppure qualche settaggio in opzioni per excel non è corretto?

    vi informo che per risolvere il problema della formattazione ho utilizzato una routine che copia sull'ultimo record inserito la formattazione di origine Ma non mi sembra elegante

    per il corretto inserimento sospetto che c''entrino  le celle settate aDBnull ma non so come risolvere in automatico la questione

    Grazie per gli aiuti e cordiali saluti

    Giovanni Cantoni

    sabato 25 giugno 2022 16:57

Tutte le risposte

  • Ciao Giovanni,

    Sarebbe meglio se puoi mostrare la parte del codice che va storta.

    Così la gente può vedere eventuali errori nel syntax o da altre parti e correggerti.

    Altrimente puoi dare un`occhiata a questo LINK.


    Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.




    lunedì 27 giugno 2022 05:27
    Moderatore
  • preciso che l'applicazione e realizzata con VB e non "c" per cui il link proposto è intressante ma non fa al caso mio

    allego una porzione di codice precisando che lo sheet interessato che funziona da data base usa una formattazione per ogni singola colonna a seconda dei dati caricati è per questo motivo che la formattazione del record inserito è stata risolta con la sun che pure allego rimane il problema dell inserimento del nuovo record nella prima riga libera.Non ho ricevuto nessuna dritta

     Private Sub caricamatrice()
        'carica il movimento aggiornato nello sheet matriceanalisi
        connexcel1()
        con.Open()
        Dim cmd As New OleDbCommand
        cmd.Connection = con
        cmd.CommandText = "INSERT INTO [matriceanalisi$](Progr,Data,Entrate,Uscite,Gruppo," &
                  "Desgruppo,Conto,Desconto,Operazione,Mese) VALUES (?,?,?,?,?,?,?,?,?,?)"
        cmd.Parameters.AddWithValue("Progr", uprg + 1)
        cmd.Parameters.AddWithValue("Data", dtp1.Text)
        cmd.Parameters.AddWithValue("Entrate", CDbl(txb1.Text))
        cmd.Parameters.AddWithValue("Uscite", CDbl(txb2.Text))
        cmd.Parameters.AddWithValue("Gruppo", matrcod(j, 0))
        cmd.Parameters.AddWithValue("Desgruppo", matrcod(j, 1))
        cmd.Parameters.AddWithValue("Conto", matrcod(j, 2))
        cmd.Parameters.AddWithValue("Desconto", matrcod(j, 3))
        cmd.Parameters.AddWithValue("Operazione", matrcod(j, 4) & " " & txb3.Text)
        cmd.Parameters.AddWithValue("Mese", dtp1.Text.Substring(3, 2))
            Try
                cmd.ExecuteNonQuery()
            Finally
                con.Close()
            End Try
            ultimo_movimento()
            formatoultrecordmatr()
        End Sub
       

    Private Sub formatoultrecordmatr()
            'normalizza alle caratteristiche prescelte l'ultimo record inserito
            App = New Microsoft.Office.Interop.Excel.Application
            File = App.Workbooks.Open(Percorso)
            App.Visible = True
            File.Activate()
            sheet = File.Worksheets("matriceanalisi")
            r = 1
            Do While sheet.Cells(r, 1).value <> vbNullString
                r = r + 1
            Loop
            ur = r - 1
            r = 2
            sheet.Range(sheet.Cells(r, 1), sheet.Cells(r, 10)).Copy()
            sheet.Range(sheet.Cells(ur, 1), sheet.Cells(ur, 10)).
                PasteSpecial(Paste:=Microsoft.Office.Interop.Excel.XlPasteType.xlPasteFormats)
            'se si vuole formattare l'intero sheet
            'Dim unused = sheet.Range(sheet.Cells(r, 1), sheet.Cells(sheet.Rows.Count, 10)).

            chiudisheet()
        End Sub

    r buona lettura

    Giovanni

    lunedì 27 giugno 2022 16:34
  • Difficile ricostruire il problema, posta un link al tuo progetto in modo da poterlo testare
    • Modificato patel45 martedì 28 giugno 2022 15:30
    martedì 28 giugno 2022 15:30
  • grazie per l'nteressamento

    ritengo opportumo fermarci qui mi accontento della soluzione trovata vedi codice inviato

    cordiali saluti

    giovanni

    martedì 28 giugno 2022 16:45