Aggiornamento DB vba



  • Aggiornamento DB vba
    di Luca (utente non iscritto) data: 14/04/2013 15:07:10

    Salve io ho questo problema: avendo 10 textbox nelle quali devo inserire i dati dell'utente da creare e un commandbotton con la funzione di aggiungere al database i dati delle textbox. Sul foglio DB (database) ho come fine corsa la scritta: "#END#" . Ecco quello che devo fare: premendo il pulsante (commandBotton) i dati inseriti nelle textbox devono essere aggiunti nella riga del fine corsa sostituendo #END# con i dati della prima textbox e nella riga successiva riaggiungere la scritta #END#. Mi serve un aiuto per impostare il ciclo while. Vi prego aiutatemi... non so più dove sbattere la testa (se volete vi faccio vedere il file excel per farvi capire meglio lo scopo, ve lo mando via mail)
     
    Inserisco qui di seguito il codice vba del commandBotton (in versione manuale):
    
    Private Sub cmdNewCli_Click()
        Worksheets("CLIENTI").Cells(4, 1).Value = txtCognome.Text
        Worksheets("CLIENTI").Cells(4, 2).Value = txtNome.Text
        Worksheets("CLIENTI").Cells(4, 3).Value = txtDitta.Text
        Worksheets("CLIENTI").Cells(4, 4).Value = txtIva.Text
        Worksheets("CLIENTI").Cells(4, 5).Value = txtCod.Text
        Worksheets("CLIENTI").Cells(4, 6).Value = txtIndirizzo.Text
        Worksheets("CLIENTI").Cells(4, 7).Value = txtTell.Text
        Worksheets("CLIENTI").Cells(4, 8).Value = txtFax.Text
        Worksheets("CLIENTI").Cells(4, 9).Value = txtMail.Text
        Worksheets("CLIENTI").Cells(5, 1).Value = "#END#"
    End Sub



  • di Textomb data: 14/04/2013 18:46:58

    Ma non è necessario impostare un ciclo while.
    Inizialmente devi trovare l'ultima riga del foglio DB con una cosa del genere: LR=Range("A" & rows.Count).End(xlup).Row.
    A questo punto riporti i valori delle Textbox nelle rispettive celle con una registrazione del genere
    FoglioDB.Cells(LR+1,1).Value=txtCognome
    Ripeti le registrazioni per le altre Textbox a cui associ le rispettive colonne. Mentre la riga sarà sempre la nuova LR+1



  • di Vecchio Frac data: 14/04/2013 18:48:52

    Ma non ti serve marcare la prima riga da compilare, nè un "fine corsa". Excel non è un file di testo :)
    Con un paio di semplici istruzioni, come
    ultima_riga = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    If ultima_riga = 1 Then ultima_riga = 0

    puoi ricavare facilmente il numero dell'ultima riga che contiene un valore inserito, aggiungervi uno e inserire i dati nel risultato così ottenuto.

    p.s. 1: il controllo si chiama "CommandButton"
    p.s. 2: non servono mail, puoi allegare i tuoi file zippandoli direttamente in questa discussione
     
    'riprendo e riscrivo il tuo esempio
    Private Sub cmdNewCli_Click()
        With Worksheets("CLIENTI")
            ultima_riga = .Range("D" & Rows.Count).End(xlUp).Row
            If ultima_riga = 1 Then ultima_riga = 0
            .[D1] = txtCognome.Text
            .[D2] = txtNome.Text
            .[D3] = txtDitta.Text
            .[D4] = txtIva.Text
            .[D5] = txtCod.Text
            .[D6] = txtIndirizzo.Text
            .[D7] = txtTell.Text
            .[D8] = txtFax.Text
            .[D9] = txtMail.Text
    End Sub






  • di Vecchio Frac data: 14/04/2013 18:49:15

    Textomb mi ha battuto sul tempo ^_^





  • di Vecchio Frac data: 14/04/2013 18:51:06

    Errata corrige ^_^
    ...altrimenti a cosa serviva ultima_riga? ^_^
     
    'riprendo e riscrivo il tuo esempio
    Private Sub cmdNewCli_Click()
        With Worksheets("CLIENTI")
            ultima_riga = .Range("D" & Rows.Count).End(xlUp).Row
            If ultima_riga = 1 Then ultima_riga = 0
            .cells(ultima_riga + 1, 1) = txtCognome.Text
            .cells(ultima_riga + 1, 2) = txtNome.Text
           eccetera!
    End Sub





  • Aggiornamento DB vba
    di Ferraro.Luca data: 14/04/2013 18:55:04

    Il problema è che serve per scuola e quindi il mio prof vuole il fine corsa cioè l' #END# x quello vi chiedevo del fatto del fine corsa se volete vi mostro il file excel originario così da capire esattamente la struttura del foglio DB



  • di totygno71 data: 14/04/2013 19:03:38

    Se serve per sQuola a VF diamo un bel 9+ ^_^ a


  • Aggiornamento DB vba
    di Ferraro.Luca data: 14/04/2013 19:04:57

    allego il file guardatelo e sappiatemi dire una risp x favore



  • di Vecchio Frac data: 14/04/2013 19:06:23

    cit. "Il problema è che serve per scuola"
    ---> Mi hai fregato :) primo, perchè non lo avevi detto subito; secondo, perchè sono convinto che gli esercizi di scuola, uno se li deve ragionare e pensare, non chiedere il risultato pronto.
    Stavolta ha ragione totygno a riprendermi :)




  • Aggiornamento DB vba
    di Ferraro.Luca data: 14/04/2013 19:08:47

    Vecchio Frac purtorppo è da una settimana che ci ragiono senza risultati... o creo un ciclo infinito o proprio non funziona e non so più dove sbattere la testa



  • di totygno71 data: 14/04/2013 19:14:47

    Cit": allego il file guardatelo e sappiatemi dire una risp x favore

    della serie datevi na mossa... bahahahahah


  • Aggiornamento DB vba
    di Ferraro.Luca data: 14/04/2013 19:16:43

    è che mi serve entro fine settimana e se non lo consegno mi ritrovo nella merda fino al collo (scusate l'espressione)



  • di Vecchio Frac data: 14/04/2013 19:53:12

    cit. " scusate l'espressione"
    ---> ecco, vediamo quindi di non esprimerci così, visto che qui si usa la tastiera si può evitare benissimo di essere scurrili. Non fatemi prendere misure drastiche.

    Nel merito del problema, se tu integri la tua versione del codice con il nostro suggerimento (mio e di Textomb) sull'ultima_riga, ottieni il risultato desiderato.
    Non ho capito di che ciclo infinito parli. Un ciclo infinito per fare che cosa?
    E poi... una settimana che ci ragioni sopra? il ragionamento è soltanto: "raggiungi l'ultima cella valorizzata della colonna D, spostati una riga sotto e scrivi il dato".




  • Aggiornamento DB vba
    di Ferraro.Luca data: 14/04/2013 21:06:53

    con ciclo infinito intendo dire che nel ciclo while sbaglio a impostare qualcosa e allora creo un ciclo infinito bloccando tutto il pc.. comunque grazie per le soluzioni date proverò ad applicarle



  • di Vecchio Frac data: 14/04/2013 21:25:43

    Da quello che vedo è tutto il ciclo While che è impostato in modo strano (in pratica sovrascrive valori corretti). Però non entra in un loop infinito. Considera anche la necessità di inserire un importante Option Explicit in testa ai tuoi moduli.