Modifica colonna database - Visual Basic Tips and Tricks - Forum - Visual Basic - VB.NET
Questo sito utilizza cookie tecnici e di terze parti. Continuando la navigazione sul nostro sito accetti l'uso dei cookie. Per saperne di più leggi l'informativa sui cookie.   


Modifica colonna database
Ultimo messaggio: 16 ago 2019 09:52 di alip1. 16 Risposte.
Stampa gradevole
Solo gli utenti registrati possono rispondere ad una discussione.
Avatar
Giuliano_74
Messaggi: 8
Iscritto dal: 11 ago 2019 15:14
Utente
Utente

11 ago 2019 15:31
Ciao,
Un saluto a tutti .
Premetto che è da pochissimo ( un mesetto ) che ho cominciato a studiare un po' il VB.net , volevo scrivere un piccolo programma che si basa su un database Access, sono quasi riuscito a fare il tutto ma ho un problema che non riesco a risolvere e spero nel vostro aiuto cerco di spiegarlo per bene.
Ho una data DataGridView1 nella quale ho caricato il mio database in questo c'è una tabella che contiene diverse voci tipo , ed ho una casella di nome orario di partenza ( tipo data-ora ) con orari prestabiliti e un'altra casella ( arrivo ) sempre tipo data-ora vorrei che il valore di arrivo ( quando viene eseguita la query ) verrebbe calcolato in base al valore di partenza ciò arrivo = partenza + 2 ore .
In access ho programmato il tutto senza problemi con il comando dateadd .
Purtroppo in VB.net non riesco a capire dove scrivere questo codice è come fare tramite codice a selezionare le colonne arrivo è partenza.
Spero in vostro aiuto
    Avatar
    Giuliano_74
    Messaggi: 8
    Iscritto dal: 11 ago 2019 15:14
    Utente
    Utente

    12 ago 2019 10:54

    Scusate pian pian ci sto arrivando 

    ho provato con questo comando a cambiare il valore di una casella ma mi cambia solo quella selezionata come faccio a far cambiare tutta la colonna ?

    DataGridView1.CurrentRow.Cells("DataDataGridViewTextBoxColumn").Value = data22  

     

      Avatar
      patel
      Messaggi: 365
      Iscritto dal: 04 feb 2017 19:43
      Utente
      Utente

      13 ago 2019 08:57
      non mi è ben chiaro cosa vuoi fare, comunque è ovvio che con currentrow non puoi modificare una colonna, magari prova con currentcolumn
        Avatar
        Giuliano_74
        Messaggi: 8
        Iscritto dal: 11 ago 2019 15:14
        Utente
        Utente

        13 ago 2019 11:31

        Ciao Patel,

        Grazie per la risposta cerco di spiegarmi meglio, nel database che collego alla DataGridView1 c'é una casella Partenza che contiene degli orari prestabiliti  es. 17:00 - 18:15 Etc. ed una casella Arrivi vuota, io vorrei che al caricamento del database per il riempimento della casella Arrivi venga preso come riferimento ( partenza ) ore 17:00 e vengano aggiunte 2 ore quindi mi dovrebbe dare ore 19:00 .

        con il seguente codice inserito in un Button riesco a modificare solo la cella selezionata, mentre vorrei che vengano modificate tutte le celle al caricamneto del database.

        Dim data1 = (DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"))
        Dim data22 = DateAdd("h", 2, data1).ToString("dd/MM/yyyy HH:mm:ss")
        DataGridView1.CurrentRow.Cells("DataDataGridViewTextBoxColumn").Value = data22 

        E Possibile dare questo comando DateAdd("h", 2, data1)  in una casella calcolata ? 

        Spero in un aiuto.

          Avatar
          SirJo
          Messaggi: 2428
          Iscritto dal: 30 apr 2012 08:43
          Utente
          Utente

          13 ago 2019 15:00
          non si capisce nulla di quello che scrivi

          > Ho una data DataGridView1

          ma hai una "data" o una "DataGridView1" ?? sono due cose diverse

          Poi non metti mai una virgola, un punto o altro e non si capisce dove inizia una frase e dove finisce.

          > il mio database in questo

          ecco, qui non ho capito nulla cosa vuoi dire

          >non riesco a capire dove scrivere questo codice è come fare tramite codice a selezionare le colonne arrivo è partenza

          probabilmente non conosci la differenza tra "è" e "e", perchè dire "arrivo è partenza" non ha senso, se è l'arrivo è una cosa, se è la partenza è un'altra cosa, ti sembra che l'arrivo e la partenza siano la stessa cosa ??

          anche il mio italiano non è perfetto, lo ammetto, ma spiegarsi un po' meglio non sarebbe male.

          Comunque, dal poco che ho capito, potresti far fare il calcolo
          arrivo = partenza + 2 ore
          sul comando della query che utilizzi per estrarre i dati dal database, così poi alla GridView non devi fargli fare nulla.

          Che stringa di query utilizzi ??

            Avatar
            Giuliano_74
            Messaggi: 8
            Iscritto dal: 11 ago 2019 15:14
            Utente
            Utente

            14 ago 2019 06:19

            SirJo

            mi hai distrurro :-( .

            Vivo da 30 Anni in Germania e a volte scrivo le frasi pensandole in Tedesco, per quanto riguarda la punteggiatura hai perfettamente ragione, non è mai stato il mio forte.

            Tornando al mio problema uso una semplice Query di selezione a 3 criteri :

            SELECT ID, Tour, VerEntsporgung, MeinStandort, Partenza, AbfahrtAnkunft, ZielHerkunft, Arrivo, AbfahrtAnkunft1, direktindirekt, LetzteDispo, LetzteRueckmeldung 
            FROM tblFahrplan
            Where ( VerEntsporgung  Like ? + '%' ) AND ( MeinStandort  Like ? + '%' ) AND ( ZielHerkunft  Like ? + '%' )
            Order by MeinStandort.

            Come vedi le varie voci sono in tedesco, in Italiano ho scritto solo Partenza, ed arrivo.

            quale comando dovrei aggiungere alla Query per far si che calcoli l'arrivo ?.

            e scusate ancora per il mio Italiano.

            Grazie.

             

             

              Avatar
              alip1
              Messaggi: 101
              Iscritto dal: 30 apr 2012 09:34
              Utente
              Utente

              14 ago 2019 06:46
              Non so di che tipo sono i campi, ma se partenza è un tipo date prova così:

              SELECT ID, Tour, VerEntsporgung, MeinStandort, Partenza, AbfahrtAnkunft, ZielHerkunft, dateadd ("h",2,partenza) as Arrivo, AbfahrtAnkunft1, direktindirekt, LetzteDispo, LetzteRueckmeldung
              FROM tblFahrplan
              Where ( VerEntsporgung Like ? + '%' ) AND ( MeinStandort Like ? + '%' ) AND ( ZielHerkunft Like ? + '%' )
              Order by MeinStandort.
                Avatar
                GianniA
                Messaggi: 3169
                Iscritto dal: 30 apr 2012 00:14
                Socio
                Socio

                14 ago 2019 10:54
                Non ho capito se idati della colonna arrivo devono finire nel db, se non è così puoi usare una colonna calcolata.
                Trovi molta documenatzione in rete cercando "datagridview e colonna calcolata"
                  Avatar
                  Giuliano_74
                  Messaggi: 8
                  Iscritto dal: 11 ago 2019 15:14
                  Utente
                  Utente

                  14 ago 2019 11:31

                  Alip1,

                  GRAZIE funziona benissimo finalmente ho imparato un'altra cosa, purtroppo sulle varie guide che sto leggendo e sul Libro che ho comprato questo metodo non e descritto.

                  Adesso  non so se e possibile vorrei aggiungere la riga ( in grassetto ) perche l'ora adesso è esatta ma non so perche la data e sbaglaita ( vedi sotto ) come posso formattarla ? perchè come e scritta mi da errore.

                   

                  SELECT ID, Tour, VerEntsporgung, MeinStandort, Partenza, AbfahrtAnkunft, ZielHerkunft, dateadd ("h",2,partenza)..ToString("dd/MM/yyyy HH:mm:ss") as Arrivo, AbfahrtAnkunft1, direktindirekt, LetzteDispo, LetzteRueckmeldung 
                  FROM tblFahrplan 
                  Where ( VerEntsporgung Like ? + '%' ) AND ( MeinStandort Like ? + '%' ) AND ( ZielHerkunft Like ? + '%' ) 
                  Order by MeinStandort.


                  @ GianniA, la documentazione Datagridview l'ho letta grazie a questa sono riuscito a fare altre cose ma non quello sopra descritto.

                  Il consiglio di Alip1 ha risolto il problema. Mi rimane solo la formattazione perche mi da la data sbagliata.


                  Grazie a tutti voi.


                    Avatar
                    alip1
                    Messaggi: 101
                    Iscritto dal: 30 apr 2012 09:34
                    Utente
                    Utente

                    14 ago 2019 14:29
                    Prova così :

                    SELECT ID, Tour, VerEntsporgung, MeinStandort, Partenza, AbfahrtAnkunft, ZielHerkunft, format (dateadd ("h",2,partenza),"dd/MM/yyyy HH:mm:ss") as Arrivo, AbfahrtAnkunft1, direktindirekt, LetzteDispo, LetzteRueckmeldung
                    FROM tblFahrplan
                    Where ( VerEntsporgung Like ? + '%' ) AND ( MeinStandort Like ? + '%' ) AND ( ZielHerkunft Like ? + '%' )

                    Dovresti sempre precisare in quale ambiente stai utilizzando la select.

                    Scusa visto che stai utilizzando access come motore db perché non ti crei in access una query così fatta e nel codice fai un semplice select * from nomequery ?
                      Avatar
                      Giuliano_74
                      Messaggi: 8
                      Iscritto dal: 11 ago 2019 15:14
                      Utente
                      Utente

                      14 ago 2019 16:44

                      Ciao Alip1

                      non lo faccio perchè  in access non l'ho programmato in una query ma nella casella del form dove è inserita la casella della tabella.

                      Domanda, quando connetto il databse access in Visual Studio, vengono importate automaticamente anche le Query che sono presenti nel Database ? o le devo importare in altro modo ?.

                      Domani provo  il codice sotto riportato e ti faccio sapere.

                      Ancora Grazie 

                        Avatar
                        alip1
                        Messaggi: 101
                        Iscritto dal: 30 apr 2012 09:34
                        Utente
                        Utente

                        14 ago 2019 18:47

                        Scusami ma non importa dove vai ad usarla ... una query é semplicemente precompilata e la sua esecuzione é più veloce, inoltre se la apri iviene eseguita e puoi subito controllare il risultato ed eventualmente apportare le modifiche in modalità struttura.

                        Poi puoi utilizzarla ovunque vuoi: ad esempio in un form o report nella proprietà Origine Dati, scrivi:

                        Select * From NomeQuery..... ed ottieni i dati che nel form puoi poi gestire.

                        In una routine di codice come scrivi la tua select... complessa... scrivi più semplicemente

                        Select * From NomeQuery, ed ottiene i records con le colonne ed i dati che hai richiesto..

                        La query la puoi usare come se fosse una tabella ovunque tu vuoi... l'unica cosa che potrebbe essere non aggiornabile se i dati provengono da tabelle con chiave univoca che non é presente nella query...

                         

                        Ma puoi anche fare join tra più query diverse... ecc. ec. ecc. 

                        Una volta fatta una connessione il DB ti é disponibile in tutto: tabelle, Viste, Query di selezione, query di comando (update, Insert, Delete)... 

                        Per cui non dovresti avere difficoltà.. Buon Lavoro..

                         

                         

                          Avatar
                          Giuliano_74
                          Messaggi: 8
                          Iscritto dal: 11 ago 2019 15:14
                          Utente
                          Utente

                          15 ago 2019 06:46

                          Grazie dei tuoi prezioni consigli,

                          Potreste indicarmi un buon Libro da comprare, o una guida che mi possa aiutare ad approfondire lo studio di Visual Studio ? dove posso trovare delle guide che mi aiutino ad approfondire i vari comandi ? Al momento mi interesse approfondire la programmazione di Database in VB.

                            Avatar
                            SirJo
                            Messaggi: 2428
                            Iscritto dal: 30 apr 2012 08:43
                            Utente
                            Utente

                            15 ago 2019 07:01
                              Avatar
                              alip1
                              Messaggi: 101
                              Iscritto dal: 30 apr 2012 09:34
                              Utente
                              Utente

                              15 ago 2019 07:40
                              Beh c'è ne sono tanti in giro e poi dipende anche dalla versione VS che stai utilizzando.

                              Io ad esempio sto usando VS2012 ed ho un testo della Murach: Visual Basic 2012...

                              I testi della Murach sono ben fatti e con tanti esempi, ti passo il link:

                              https://www.murach.com/

                              Ma trovi tanto anche su Amazon, su HOEPLI , ...
                                Avatar
                                Giuliano_74
                                Messaggi: 8
                                Iscritto dal: 11 ago 2019 15:14
                                Utente
                                Utente

                                16 ago 2019 08:45

                                Ciao Alip1

                                 

                                Grazie per il Link, posso acquistarli anche in Italiano ? 

                                  Avatar
                                  alip1
                                  Messaggi: 101
                                  Iscritto dal: 30 apr 2012 09:34
                                  Utente
                                  Utente

                                  16 ago 2019 09:52

                                  Quelli della Murach sono in Inglese... altri se vedi su Mondadori, Hoepli anche in Italiano...

                                    Solo gli utenti registrati possono rispondere ad una discussione.