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.

È stato utile?

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

update <table>
set value = :v1
where something = :v2

e quindi si chiama il metodo 'execsql' per aggiornare fisicamente la tabella.

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 ....

scroll top