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

    Ennesimo errore di sintassi?

    I miei campi li inizializzo così e poi richiamo la classe:
    codice:
    				Int32 Id;
    				string tableName="[stati]";
    				string nomeId="ID_Stati";
    				Id= Convert.ToInt32(Request.QueryString["Cod"]);
    				Access.cancRecord(tableName, nomeId, Id);
    La classe fa questo:

    codice:
    		public static void cancRecord(string tableName, string nomeId, Int32 Id)
    		{
    			OleDbConnection conn = new OleDbConnection(connString);
    			conn.Open();
    			OleDbCommand comm = new OleDbCommand("DELETE FROM " + tableName + " WHERE " + nomeId + "=" + Id  ,conn);
    			comm.ExecuteNonQuery();
    			conn.Close(); 
    		}
    ---

    Essendo il pezzo sopra tra try e chatc, mi finisce nel catch ma non capisco come mai... cosa non riesce a fare? da dove viene generato l'errore?

  2. #2
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Io non uso access, però so che in genere è meglio mettere i nomi delle colonne fra parentesi.
    Ciao
    Legnetto

  3. #3
    non sono sicura che quello sia il motivo dell'errore, ma credo che dovresti mettere
    delete * from .....

    poi è preferibile mettere nometabella.nomecolonna perchè a volte da errore anche per quello
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Non è detto che siano le parentesi, sicuramente però la sintassi corretta per cancellare un record non è:
    codice:
    Delete * from tabella
    ma
    codice:
    Delete from tabella
    Ciao

  5. #5
    Originariamente inviato da Legnetto
    Non è detto che siano le parentesi, sicuramente però la sintassi corretta per cancellare un record non è:
    codice:
    Delete * from tabella
    ma
    codice:
    Delete from tabella
    Ciao
    Ma in Access si usa l'asterisco.. quindi concordo con cicciociccioxxx.. prima fai questa mod e poi dicci se ti da ancora l'errore

    Ps. perché quando finisci nel "catch" nn fai in modo che venga scritto un file di log con gli errori? In questo modo sai sempre il motivo e puoi tenere d'occhio la tua applicazione


  6. #6
    Originariamente inviato da ZofM

    Ps. perché quando finisci nel "catch" nn fai in modo che venga scritto un file di log con gli errori? In questo modo sai sempre il motivo e puoi tenere d'occhio la tua applicazione

    io mi sono sempre arrangiata con l'esecuzione passo passo
    ma visto che la tua idea è più comoda
    come si fa a creare un file che contenga gli errori?
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

  7. #7
    Originariamente inviato da cicciociccioxxx
    io mi sono sempre arrangiata con l'esecuzione passo passo
    ma visto che la tua idea è più comoda
    come si fa a creare un file che contenga gli errori?
    Beh la cosa migliore è creare una funzione apposta.. ad es. infilandola dentro una classe (per poi richiamarla dalle pagine ASPX).
    Ad esempio (l'ho creata al volo.. magari manca qualcosa..):
    codice:
    namespace HTMLit {
        using System;
        using System.IO;
        using System.Diagnostics;
    
        /// <summary>
        /// Summary description for Errori.
        /// </summary>
        public class Logger {
    
            /// <summary>
            /// Creates a new instance of Errori
            /// </summary>
            public Logger() {
            }
    
            public static void WriteToLog(string TextToWrite) {
                // recupero il percorso del file dal web.config
                string LogFilePath = System.Configuration.ConfigurationSettings.AppSettings["LogFilePath"];
    
                try {
                    // scrivo nel file di log
                    StreamWriter sw = new StreamWriter(LogFilePath, true);
                    sw.WriteLine(
                        DateTime.Now.ToShortDateString() + " " +
                        DateTime.Now.ToLongTimeString() + ": " +
                        TextToWrite
                        );
                    sw.Close();
                } catch (Exception ex) {
                    // eccezione non gestita (ad es. mancanza di permessi scrittura)
                    // scrivo nel debugger del CLR
                    Debug.WriteLine( "Eccezione non gestita durante la scrittura dei log: " + ex.GetType().Name );
                    Debug.WriteLine( ex.Message );
                    Debug.WriteLine( ex.StackTrace );
                }
            }
        }
    }
    Nel file web.config deve essere indicato il percorso completo del file:
    codice:
    <configuration>
    ...
      <appSettings>
        <add key="LogFilePath" value="c:\\Errori.log"/>
      </appSettings>
    ...
    </configuration>
    E dentro le tue pagine ASPX (o classi, o control) richiami la classe Logger in questo modo:
    codice:
    Logger.WriteToLog("Questo va a finire nei log");
    (importa il Namespace HTMLit (l'ho chiamato così))


  8. #8
    grazie
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

  9. #9
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da ZofM
    Ma in Access si usa l'asterisco.. quindi concordo con cicciociccioxxx..
    Quindi mi cospargo il capo di cenere e chiedo venia.....
    Legnetto

  10. #10
    Originariamente inviato da Legnetto
    Quindi mi cospargo il capo di cenere e chiedo venia.....
    Legnetto
    No no, la tua risposta era comunque valida perché, se non sbaglio, lo standard ANSI per l'SQL prevede la sintassi senza l'asterisco.

    In Access, chissà perché, è stato introdotto l'asterisco anche per le DELETE

    Ovviamente questa è una cosa che sa solo chi c'ha lavorato..

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.