Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    27

    [C#] Software invio SMS... e SQL

    Salve a tutti, per svolgere il tirocinio per l'università mi sono rivolto alla scuola dove ho frequentato le superiori "I.T.I. Informatica" e il Prof. di Informatica che mi ha preso in consegna (ai tempi mio professore) mi ha assegnato il compito di creare un applicativo C# in VisualStudio 2008, che gestisca l'invio di SMS della scuola a Professori, Genitori e Personale. Pubblico screen dell'interfaccia che ho creato!
    In pratica il programma a seconda del radioButton specificato e delle condizioni delle comboBox esegue il codice per richiamare le informazioni dal database e le inserisce nel dataGridView!

    Il programma è molto complesso, quindi passo passo che troverò difficoltà chiederò un aiutino a voi guru della programmazione!

    Fino ad adesso sono riuscito a fare il collegamento con il database eseguire la richiesta SQL e ricevere i dati.
    Più precisamente utilizzo l'oggetto SqlDataAdapter objDA = new SqlDataAdapter("richiesta SQL, oggetto connessione);
    poi riempo un DataTable objDT = new DataTable();

    objDA.Fill(objDT);

    e poi riempo: dataGridView.DataSoruce(objDT);

    fino a qui tutto ok...
    il primo problema che vi pongo è:
    se seleziono radioButton dei professori e aggiungo...
    poi selezione radioButton dei Genitori e aggiungo... i professori mi vengono cancellati dal dataGridView!! Questo perchè all'interno degli if di condizione "se è prof" o "se è genitore" ogni volta ridicharo objDT. Il fatto di ridichiararla e quindi resettarla è necessario poichè se dopo l'inserimento di prof si volesse cambiare categoria non può restare objDT con tutti i record vecchi!!
    Quindi objDT va ridichiarata e quindi riazzerata ogni volta!
    Il problema è che se io aggiungo prima i professori e poi i genitori, i prof non devono venire sovrascritti dai genitori....

    quindi la mia domanda è c'è una funzione che dal dataGridView mi possa ritornare il contenuto di questa in una variabile DataTable temp dove salvare il contenuto del dataGridView? in modo che dopo che l'inserimento dei genitori sovrascrive i precedenti prof con la variabile temp possiamo reinserire i prof nel dataGridView????


    EDIT: oppure anche una funzione per aggiornare il dataGridView invece di sovrascrivere le righe già presenti!

    spero di essere stato chiaro... grazie a tutti quelli che risponderanno!!
    Immagini allegate Immagini allegate

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    ciao, per prima cosa questo è il forum di asp.net non di c# e winform

    il tuo problema è che tu stai "incollando" la logica di accesso ai dati con l'interfaccia utente "sperando" che su questo strato di colla ci siano tutte le funzionalita che servono per risolvere un problema specifico o peggio ancora cercando di costruire queste funzionalita su quello che alla fine è per l'appunto solo uno strato di colla.

    Usa ADO.NET "SOLO" per recuperare (e memorizzare) i dati e usa l'interfaccia "SOLO" come strumento per far interagire l'utente con i pezzi di logica del TUO programma. Per fare questo hai appunto bisogno di un consistente strato logico che non è ADO.NET e che non è nei radiobutton.

    Hai bisogno di classi che modellano il tuo problema e che abbiano le funzionalità risolvere il problema.
    per essere un po' piu specifici:
    Creati una classe astratta CONTATTO da cui derivano GENITORE, PERSONALE, DOCENTE (e tutte le altre che potrebbero aggiungersi in futuro). Creati una collection di contatti che rappresenta la lista di contatti a cui inviare l'sms. quando recuperi i dati con ado.net invece che spararli sulla gridview mappali su questi oggetti e riempi la collection. Dai la possibilità di aggiungere i contatti in coda alla collection o di resettare la collection (due tasti collegati ad altrettante funzioni). Rendi la Gridview "passiva" (difficile da fare con winform) o per lo meno cerca di dargli meno responsabilità possibili: deve limitarsi SOLO a visualizzare quello che c'è nella collection di contatti.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    27
    Originariamente inviato da rsdpzed
    ciao, per prima cosa questo è il forum di asp.net non di c# e winform

    il tuo problema è che tu stai "incollando" la logica di accesso ai dati con l'interfaccia utente "sperando" che su questo strato di colla ci siano tutte le funzionalita che servono per risolvere un problema specifico o peggio ancora cercando di costruire queste funzionalita su quello che alla fine è per l'appunto solo uno strato di colla.
    Hai perfettamente ragione e colto nel segno! io una volta recuperati i dati li metto nel dataGridView, perchè all'inizio quando ho cominciato a programmare pensavo di non dover aggiornare il dataGrid, o comunque se questa eventualità si fosse posta (come si è verificato), "speravo" che il dataGrid mi avrebbe concesso dei metodi che rendessero lo stesso dataGrid strumento di elaborazione della lista contatti e non solo strumento di visualizzazione...

    Detto questo, l'idea di utilizzare una lista non è male!! Ma ahimè al momento ricordo solo quelle col lo struct e puntatori a next e prev del C.... anche se ricordo di averle fatte quelle con le classi in C++, ma al momento non ricordo la struttura :S dovrei andarle a "rivedere"....
    Quello che mi viene in mente adesso è che per ogni contatto si genera un oggetto della classe!! Ovviamente ci saranno puntatori (globali) all'ultimo contatto inserito che serviranno per far puntare il next dell'ultimo inserito a quello nuovo!

    ****A parte la logica delle classi e il gioco di puntatori, io comunque riceverò la tabella nel mio oggetto DataTable objDT, i campi che recupero con la select sono Type (prof,genitore,operatore), Nome, MobileNumber. quindi come faccio dall'oggetto data table ad estrarre il tipo, per sapere quale oggetto della classe creare? Premetto che non ho ancora provato... ma adesso mi adopero subito!!****

    ****EDIT: Probabilemente non è necessario ereditare classe prof,genitore,operatore... da contatto...
    ma utilizzare solo la classe contatto che ha già l'attributo tipo!

    RE-EDIT all'interno della classe contatto dichiaro un attributo public Contatto* next, e mi da l'errore "puntatori e buffer di dimensione fissa possono essere utilizzati solo in un contesto unsafe".... che significa?? l'errore me lo da anche quando fuori dalla classe dichiaro i puntatori globali first, last e nuovo!

    Per quanto riguarda la sezione sbagliata chiedo ai moderatori di spostarla in quella giusta sempre che ci sia su questo forum... grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    27
    per adesso ho risolto... se mi verranno altri dubbi chiederò

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.