Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Associare ad una stringa il contenuto di un db

    Devo inviare per mail il contenuto di un db con delle formattazioni, come fare?

    in pratica vorrei un output di questo tipo:

    ---

    Invio statistiche:

    Pippo - 25/9/2005
    Pluto - 26/9/1896
    Pacci - 4/12/2006
    Pippi - 2/9/2005

    ---

    La mail la invio in formato html. fino ad invio statistiche e due br ci sono ma poi come faccio il resto? serve un ciclo? In pratica mi servirebbe che dopo l'intestazione si vedesse primo campo trattino dataprimocampo + br e così via.

    Sonia

  2. #2
    Usi un DateReader per leggere il contenuto di tutti i record e li inserisci nella stringa. Per esempio:
    codice:
    OleDataReader dr=command.ExecuteReader();
    string dati=string.Empty;
    while (dr.Next())
    {
    dati=string.Format("{0}{1} - {2}
    ",dati,
       dr["nome"].ToString(),dr["data"].ToString())
    }
    dr.Close();
    In "dati" avrai infine il contenuto di tutti i personaggi con data. Ah, questo codice l'ho scritto a memoria, controlla eventuali inesattezze.

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie

    Ho fatto così:
    codice:
    				string tableName = "stat"; 
    				string ordine = "nome";
    
    				string str_conn = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
    				OleDbConnection cnn = new OleDbConnection(str_conn) ;
    
    				OleDbCommand cmd = new OleDbCommand ("SELECT * FROM " + tableName + " ORDER BY " + ordine + " ASC", cnn);
    
    				cnn.Open();
    				OleDbDataReader dr=command.ExecuteReader();
    
    				string dati=string.Empty;
    				while (dr.Next())
    				{
    					dati=string.Format("{0}{1} - {2}
    ",dati,
    						dr["nome"].ToString(),dr["data"].ToString());
    					}
    				cnn.Close();
    ho importato: System.Data.OleDb; e System.Data, ma mi da questi errorini che non comprendo:

    c:\inetpub\wwwroot\ppp\admin\dati.aspx.cs(69): The type or namespace name 'command' could not be found (are you missing a using directive or an assembly reference?)
    (lo segnala la riga dopo la cnn.open)

    c:\inetpub\wwwroot\ppp\admin\dati.aspx.cs(72): 'System.Data.OleDb.OleDbDataReader' does not contain a definition for 'Next'
    (lo segnala su dr.next)

  4. #4
    Be', era sufficiente che modificavi il nome dell'oggetto command con quello che avevi nel tuo codice:
    codice:
    string tableName = "stat"; 
    				string ordine = "nome";
    
    				string str_conn = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
    				OleDbConnection cnn = new OleDbConnection(str_conn) ;
    
    				OleDbCommand cmd = new OleDbCommand ("SELECT * FROM " + tableName + " ORDER BY " + ordine + " ASC", cnn);
    
    				cnn.Open();
    				OleDbDataReader dr=cmd.ExecuteReader();
    
    				string dati=string.Empty;
    				while (dr.Read())
    				{
    					dati=string.Format("{0}{1} - {2}
    ",dati,
    						dr["nome"].ToString(),dr["data"].ToString());
    					}
    				cnn.Close();
    Poi modifica il next in read... mio errore di distrazione

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Anche se hai azzeccato i miei errori hai sbagliato l'analisi: ho bisogno di ferie
    Tnx!

    Sonia

  6. #6
    Dagli errori, mi che anche io ne ho bisogno! :maLOL:

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Riesumo questo post per l'ennesimo problema...
    Bene devo fare due stringhe dati e datig con 2 diverse query e ho fatto in questo modo:

    codice:
    string str_conn.......
    				OleDbConnection cnn = new OleDbConnection(str_conn) ;
    
    				// dati dettagliati
    				OleDbCommand cmd = new OleDbCommand ("SELECT * FROM " + tableName + " ORDER BY " + ordine + " ASC", cnn);
    
    				cnn.Open();
    				OleDbDataReader dr=cmd.ExecuteReader();
    
    				string dati=string.Empty;
    				while (dr.Read())
    				{
    					dati=string.Format("{0}{1} - {2}
    ",dati,
    						dr["nome"].ToString(),dr["data"].ToString());
    				}
    				cnn.Close();
    
    				// dati generici
    				OleDbCommand cmd2 = new OleDbCommand ("SELECT Nome, Count(*)AS Conteggio FROM stat GROUP BY " + ordine + " ORDER BY " + ordine + " ASC", cnn); 
    
    				cnn.Open();
    				OleDbDataReader dr2=cmd.ExecuteReader();
    
    				string datig=string.Empty;
    				while (dr2.Read())
    				{
    					datig=string.Format("{0}{1} - {2}
    ",dati,
    						dr["nome"].ToString(),dr["conteggio"].ToString());
    				}
    				cnn.Close();
    Partendo dal presupposto che la seconda query è per forza esatta in quanto l'ho copiata da una pagina dove funziona. Essendo che come errore mi viene restituito un "colonna o riga vuota" direi che ho sbagliato qualcosa nel duplicare la seconda concatenazione, ma ovviamente non so dove...

    No data exists for the row/column.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.InvalidOperationException: No data exists for the row/column.

    Source Error:


    Line 88: while (dr2.Read())
    Line 89: {
    Line 90: datig=string.Format("{0}{1} - {2}
    ",dati,
    Line 91: dr["nome"].ToString(),dr["conteggio"].ToString());
    Line 92: }

    (errore su linea 90)

  8. #8
    Tuo banale errore di distrazione: utilizzi ancora il datareader vecchio quando devi usare quello nuovo. Inoltre ho visto che apri e chiudi la connessione quando il database è lo stesso: è una procedura inutile; inoltre non chiudi i datareader dopo il loro utilizzo. Prova con:
    codice:
    OleDbConnection cnn = new OleDbConnection(str_conn) ;
    
    				// dati dettagliati
    				OleDbCommand cmd = new OleDbCommand ("SELECT * FROM " + tableName + " ORDER BY " + ordine + " ASC", cnn);
    
    				cnn.Open();
    				OleDbDataReader dr=cmd.ExecuteReader();
    
    				string dati=string.Empty;
    				while (dr.Read())
    				{
    					dati=string.Format("{0}{1} - {2}
    ",dati,
    						dr["nome"].ToString(),dr["data"].ToString());
    				}
    				dr.Close();
    
    				// dati generici
    				OleDbCommand cmd2 = new OleDbCommand ("SELECT Nome, Count(*)AS Conteggio FROM stat GROUP BY " + ordine + " ORDER BY " + ordine + " ASC", cnn); 
    
    				OleDbDataReader dr2=cmd.ExecuteReader();
    
    				string datig=string.Empty;
    				while (dr2.Read())
    				{
    					datig=string.Format("{0}{1} - {2}
    ",dati,
    						dr2["nome"].ToString(),dr2["conteggio"].ToString());
    				}
                                    dr2.Close();
    				cnn.Close();
    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  9. #9
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie Andrea

    Come vedi nel secondo dr ho un Count (*) as conteggio, il "nome" l'ho messo appunto perchè non saprei come richiamarlo, ma a quanto pare non gli piace.

    codice:
    Conteggio 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
    
    Exception Details: System.IndexOutOfRangeException: Conteggio
    
    Source Error: 
    
    
    Line 87: 			while (dr2.Read())
    Line 88: 			{
    Line 89: 				datig=string.Format("{0}{1} - {2}
    ",dati,
    Line 90: 					dr2["nome"].ToString(),dr2["Conteggio"].ToString());
    Line 91: 			}
    Sonia

  10. #10
    Mi sembra strano anche non accetti gli "alias". Comunque la cosa la puoi risolvere facilmente scrivendo, invece nel nome del campo quandi cerchi il suo valore, il numero in qui quel campo è nell'elenco, per esempio:
    codice:
    dr2["nome"].ToString(),dr2[1].ToString()
    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

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.