Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Aiutino datagrid...

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

    Aiutino datagrid...

    Ho creato un datagrid:

    codice:
    <asp:datagrid id="Riepilogo" runat="server" GridLines="Horizontal" CellPadding="3" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#E7E7FF">
    					<SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle>
    					<AlternatingItemStyle BackColor="#F7F7F7"></AlternatingItemStyle>
    					<ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle>
    					<HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle>
    					<FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle>
    					<PagerStyle HorizontalAlign="Right" ForeColor="#4A3C8C" BackColor="#E7E7FF" Mode="NumericPages"></PagerStyle>
    				</asp:datagrid>
    nel file.cs ho messo nel page load:
    codice:
    private void Page_Load(object sender, System.EventArgs e)
    		{
    						string tableName = "persone";
    			Riepilogo.DataSource = Access.visRecord(tableName); 
    			Riepilogo.DataBind();
    
    		}
    Ovviamente l'errore si trova in questa riga:

    Riepilogo.DataSource = Access.visRecord(tableName);

    visRecord mi visualizza tutti i record della tabella che gli passo e la classe access me la compila correttamente, quindi direi che il mio errore è come richiamo la sorgente dati giusto? e come la chiamo se non così?

    L'errore preciso è: C:\Inetpub\wwwroot\FormSalvaDb\WebForm1.aspx.cs(29 ): Cannot implicitly convert type 'void' to 'object'

    Grazie

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

    aggiornamento...

    Ho modificato la funzione così:

    public static bool visRecord (string tableName)
    {
    //creo l'oggetto connection e gli passo la stringa di connessione
    OleDbConnection conn = new OleDbConnection(connString);
    //faccio l'Open della connessione
    conn.Open();

    OleDbCommand comm = new OleDbCommand("SELECT * FROM " + tableName ,conn);

    //Faccio l'ExecuteNonQuery
    comm.ExecuteNonQuery();
    }

    E adesso ho questo errore su visRecord: C:\Inetpub\wwwroot\FormSalvaDb\Access.cs(34): 'FormSalvaDb.Access.visRecord(string)': not all code paths return a value

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    111
    Spero di aver tradotto correttamente dal c# in VB , comunque vedo che la funzione visRecord restituisce un boolean quando invece dovrebbe restituire un oggetto che funga da DataSource, come un DataSet o un DataTable.
    Per far questo, non devi utilizzare la funzione comm.ExecuteNonQuery , che è utile per le query di comando come INSERT e DELETE, puoi invece usare un OleDbDataAdapter e inserire i dati in una DataTable, come ad es. così (provo a scrivertelo direttamente in c#, spero di non fare casini):
    codice:
    OledbDataAdapter DA = New OledbDataAdapter(comm);
    DataTable MyTable = New DataTable;
    DA.Fill(MyTable);
    Return MyTable;
    Prova così...

    Ciao, javalon

  4. #4
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Io uso C#...
    Ho una sfilza di domande:

    1- Nel file aspx.cs ho questo page load:
    codice:
    		private void Page_Load(object sender, System.EventArgs e)
    		{
    			string tableName = "persone";
    			Riepilogo.DataSource = Access.visRecord(MyTable); 
    			Riepilogo.DataBind();
    
    		}
    (riepilogo è il nome del mio datagrid)

    2- la funz della mia classe l'ho corretta così:
    codice:
    		public static string MyTable visRecord (string tableName)
    		{
    			//creo l'oggetto connection e gli passo la stringa di connessione
    			OleDbConnection conn = new OleDbConnection(connString);
    			//faccio l'Open della connessione
    			conn.Open();
    
    			OleDbCommand comm = new OleDbCommand("SELECT * FROM " + tableName ,conn);
    	
    
    			OledbDataAdapter DA = New OledbDataAdapter(comm);
    			DataTable MyTable = New DataTable;
    			DA.Fill(MyTable);
    			Return MyTable;
    		}
    E ho tre errori di punteggiatura:

    1- C:\Inetpub\wwwroot\FormSalvaDb\Access.cs(34): ; expected (e me lo segnala su visRecord)

    2- C:\Inetpub\wwwroot\FormSalvaDb\Access.cs(44): ; expected (e me lo segnala su OledbDataAdapter)

    3- C:\Inetpub\wwwroot\FormSalvaDb\Access.cs(45): ; expected (e me lo segnala su DataTable)

    ???

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    111
    Premetto che non programmo in C# io uso VB, comunque nell'ordine:

    1)
    codice:
    public static string MyTable visRecord
    deve restituire una DataTable, quindi:
    codice:
    public static DataTable visRecord
    2)OledbDataAdapter --> OleDbDataAdapter
    Return --> return

    questione di case-sensitive....

    ciao, javalon

  6. #6
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie Javalon...
    ma i problemi rimangono...

    Su
    codice:
    public static DataTable visRecord (string tableName)
    l'errore ora è:
    C:\Inetpub\wwwroot\FormSalvaDb\Access.cs(34): The type or namespace name 'DataTable' could not be found (are you missing a using directive or an assembly reference?)

    Mentre su
    codice:
    			OleDbDataAdapter DA = New OleDbDataAdapter(comm);
    			DataTable MyTable = New DataTable;
    Continua a darmi errore di punteggiatura su OleDbDataAdapter e DataTable

    bah! I misteri.NET!

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Due orrori risolti, uno nato...

    OleDbDataAdapter DA = new OleDbDataAdapter(comm);
    DataTable MyTable = new DataTable;
    DA.Fill(MyTable);
    return MyTable;

    Avevo scritto new maiuscolo...
    Ora però su:
    DataTable MyTable = new DataTable;

    dice: C:\Inetpub\wwwroot\FormSalvaDb\Access.cs(44): A new expression requires () or [] after type

    ---

    2- continua l'errore su:
    public static DataTable visRecord (string tableName)

    C:\Inetpub\wwwroot\FormSalvaDb\Access.cs(34): The type or namespace name 'DataTable' could not be found (are you missing a using directive or an assembly reference?)

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    111
    per il primo errore:
    codice:
    DataTable MyTable = new DataTable();
    mancavano le parentesi...

    per il secondo, così dovrebbe essere a posto:

    codice:
    public static System.Data.DataTable visRecord(string filename)
    scusa, ma non programmo in C# e per di più non avevo sottomano Visual Studio...

    spero di esserti stata d'aiuto

    ciao, javalon

  9. #9
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Esatto Grazie!
    Ho aggiunto un using System.Data; e tutto è andato ok!

    quasi tutto... adesso il data grid mi da errore quando richiamo la sorgente dati

    codice:
    			Riepilogo.DataSource = Access.visRecord(MyTable);
    C:\Inetpub\wwwroot\FormSalvaDb\WebForm1.aspx.cs(29 ): The name 'MyTable' does not exist in the class or namespace 'FormSalvaDb.WebForm1'


    Direi che ho fatto un errore madornale da qualche parte, ma non capisco dove...

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    111
    Riepilogo.DataSource = Access.visRecord(MyTable);
    MyTable è una variabile stringa? E' stata dichiarata?

    Ti faccio un esempio (ti prego verifica la correttezza di maiuscole e minuscole, ribadisco, non ho sott'occhio l'editor):
    codice:
    string tableName="ORDINI";
    Riepilogo.DataSource = Access.visRecord(tableName);
    oppure passare direttamente la stringa:
    codice:
    Riepilogo.DataSource = Access.visRecord("ORDINI");
    ciao, javalon

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 © 2026 vBulletin Solutions, Inc. All rights reserved.