Equivalente a TUpdateSQL in Delphi 2010 dbExpress?
-
06-07-2019 - |
Domanda
Sto pianificando la migrazione di un'applicazione BDE di Delphi 6 a Delphi 2010 ...
-
Prima di tutto, devo allontanarmi da BDE? (Lo farò, ma preferisco farlo per gradi se possibile)
-
Secondo, dbExpress è la scelta migliore? (Sto usando MS SQL)
-
Infine, esiste un equivalente di TUpdateSQL in dbExpress? (o qualsiasi altra cosa)
Ho molti codici che aggiornano le query di sola lettura all'interno di una griglia (usando TUpdateSQL e ApplyUpdate).
Per favore aiutate ~~~
Grazie mille.
Soluzione
1) Devi sicuramente migrare da BDE a DbExpress . BDE è una tecnologia obsoleta e deprecata .
Puoi leggere questi articoli
2) DbExpress è un'alternativa migliore di BDE per comunicare con SQL Server, tuttavia preferisco ADO perché è nativo per SQL Server.
3) dbExpress non ha componenti simili a TUpdateSQL, tuttavia Luxene ha un TDBXUpdateSQL che fa parte dei componenti dbExpress eXtension .
Puoi anche controllare InstantBDExpress ( è una libreria di componenti che consente una migrazione senza interruzioni di vecchie applicazioni BDE alla tecnologia dbExpress ) da ETHEA
Ciao.
Altri suggerimenti
Su un TDataSetProvider c'è un evento chiamato BeforeUpdateRecord che è fondamentalmente un modo più manuale di fare TUpdateSQL
devi creare l'SQL da solo e quindi aggiornarlo (tramite TADOQuery ecc.)
tuttavia ha sempre le stesse basi di valori vecchi e nuovi che in TUpdateSQL
sry questo è c ++ non conosco dehpli ma sostanzialmente lo stesso penso
DeltaDS->FieldByName("id")->NewValue;
e
DeltaDS->FieldByName("id")->OldValue;
anche tu devi impostare
Applied = true;
in modo che non tenti di eseguire l'aggiornamento dopo averlo eseguito manualmente
qui alcuni link che dovrebbero aiutare
Utilizzando il componente SQLQuery di dbExpress, si possono scrivere "query" come e quindi si chiama il metodo 'execsql' per aggiornare fisicamente la tabella. update <table>
set value = :v1
where something = :v2
Usando ClientDataset e provider, puoi usare un TDatasetProvider con un gestore OnUpdateRecord generico (?, non ricordi il nome esatto ora) e farlo usare sqls che hai usato su TUpdateSQL.
Solo un'idea, nel caso in cui non sia possibile utilizzare componenti di terze parti ....