Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    Selezionare record inesistente in db access confrontandolo con file di testo

    ciao, trasferisco i record di un file di testo in una tabella di un db access, quindi mi connetto al file di testo e al db access, poi ciclo sui record del file di testo e aggiorno il record selezionato, se non è possibile aggiornarlo perchè non lo trovo, lo inserisco.. e fino a qui nessun problema.. il problema nasce quando nella tabella del db access sono presenti record che non sono presenti nel file di testo, quindi siccome la tabella del db access deve rispecchiare il file di testo, devo trovare i record del db access che non sono presenti nel file di testo e cancellarli.. apparentemente può sembrare una cosa semplice e in effetti lo è.. il problema è trovare una soluzione prestazionale, in quanto se i record si aggirano sulle poche centinai allora ok.. ma quando sono migliaia di record? l'operazione diventa lunga e non posso permettermelo
    Vi faccio vedere il codice che utilizzo:

    codice:
    ... 
    connessioni 
    .... 
    
    
    while(dr.Read()) 
    { 
    string SqlUpdate = "UPDATE Listino set codice=?,descrizione=?,marca=?,famiglia=?,disp=?,l1=?,l2=?,l3=?,l4=? where codice='"+dr[0].ToString().Trim()+"'"; 
    
    string SqlInsert = "INSERT INTO Listino (codice,descrizione,marca,famiglia,disp,l1,l2,l3,l4) VALUES(?,?,?,?,?,?,?,?,?)"; 
    
    OleDbCommand cminorup = new OleDbCommand(); 
    cminorup.CommandText=SqlUpdate; 
    cminorup.Connection=cnmdb; 
    
    //parametri che utilizzo per popolare o aggiornare il db// 
    
    int righeModificate = cminorup.ExecuteNonQuery(); 
    
    if (righeModificate==0) 
    { 
    cminorup.CommandText=SqlInsert; 
    cminorup.ExecuteNonQuery(); 
    } 
    }
    Come potrei integrare la selezione ed eliminazione dei record della tabella access non presenti nel file di testo?


  2. #2
    Se la tabella A deve sempre e solo rispecchiare la tabella B (chiave primaria compresa) non faresti prima ogni volta che lanci la procedura di importazione a svuotare la tabella A e riempirla con la tabella B?
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da riccardone
    Se la tabella A deve sempre e solo rispecchiare la tabella B (chiave primaria compresa) non faresti prima ogni volta che lanci la procedura di importazione a svuotare la tabella A e riempirla con la tabella B?
    bhè farei prima a scrivere il codice.. ma non è certo una soluzione ottimale.. pensa ad esempio ad un utente che stà navigando sul sito.. che stà facendo delle operazioni tipo aggiunta dell'articolo a carrello o la semplice navigazione tra gli articoli.. tu utente come ne parleresti di un sito che all'improvviso non ti fà vedere gli articoli o che ti cancella il contenuto del carrello?
    e poi cmq è + prestazionale aggiornare che eliminare e aggiungere..
    cmq ho risolto mettendo un campo flag alla tabella

  4. #4
    problemi di utenti che stanno usando il sito potresti averli in ogni caso (se elimini un record o lo cambi mentre l'utente lo sta usando non e' uguale?).
    Piu' prestazionale fare cicli in cui esegui due volte un command (probabilmente 3 se devi anche eliminare) rispetto a un unico inserimento? mah...
    Saluti a tutti
    Riccardo

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.