Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Passaggio traumatico asp/asp.net...

    Il 2006 per me è iniziato con una richiesta di migrazione di un sito da asp ad asp.net...

    Il primo problema che ho incontrato è questo:

    Ho due tabelle: "Clienti" e "Ordini" Con una relazione 1 a molti.

    Normalmente in asp mi muovevo in questo modo:

    Creavo una connessione, un recordset "Clienti" che visualizzavo con il classico "Do while not clienti.eof"
    All'interno del loop creavo il recordset "Ordini" per visualizzare il numero di ordini fatti per ogni cliente.

    Quindi in asp:
    codice:
    ' Dopo aver creato la connessione e il recordset clienti
    Do while not clienti.eof
    Response.write NOMECLIENTE & "br"
    set ordini = Server.createobject("ADODB.Recordset")
    sql = "Select * from ordini WHERE id_cliente =" & clienti.fields("id_cliente")
    ordini.open sql,connessione,1
    Response.write ordini.recordcount
    ordini.close
    set ordini=nothing
    clienti.movenext
    loop
    Ora in asp.net:

    Creo la connessione
    Creo un datareader per clienti

    codice:
    while clienti_reader.Read
    ecc,ecc,
    Vorrei creare qui un altro datareader per gli ordini ...ma non posso usare la stessa connessione usata per il datareader clienti se prima non la chiudo.
    Ho già risolto creando un'altra connessione ma la mia domanda è:
    E' corretto agire in questo modo? Aprendo cioè due connessioni diverse al database? perchè non posso usare la stessa connessione (aperta" per due datareader?

    Ci sono altri modi per ottenere lo stesso risultato che ottenevo con asp?

    Ps: il recordcount di asp come lo sostituisco in .net?

    Mi sa che sarà lunga....
    Despite of my rage i'm still just a rat in a cage

  2. #2
    codice:
    public MySqlDataReader SelezionaRecord(string strQUERY)
    {
    	try
    	{
    		objConn = new MySqlConnection(ConnectionString);
    		objCmd  = new MySqlCommand(strQUERY, objConn);
    		objCmd.Connection.Open();
    		return objCmd.ExecuteReader(CommandBehavior.CloseConnection);
    	}
    	catch(MySqlException ex)
    	{
    		return null;
    	}
    }
    
    MySqlDataReader myReader = SelezionaRecord("SELECT a.*, b.* FROM clienti a, ordini b WHERE a.id=b.id");
    
    while(myReader.Read())
    {
       quello che vuoi tu.
    }
    altrimenti potresti utilizzare 2 repeater annidati, per ogni riga (clienti) carichi nel secondo repeater i relativi ordini. Questolo puoi fare sfruttando la proprietà ItemDataBound del repeater.

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.