Newsgroup: it.comp.lang.delphi
Titolo: Update di database access da delphi

Salve a tutti,
scusate ancora se mando un messaggio ogni 5 minuti ma... Sono nuovo di
queste cose e non ci capisco molto...
Piazzo sulla form un oggetto TQuery.
Lo collego al databasename.
Piazzo un bottone sulla form e al suo click ci metto queste due righe:
  query1.SQL.Text:='update ActiveConnections set UTENTE="ciccio" where
UTENTE="mario"';
  query1.ExecSQL;
eseguo e mi da questo errore:
Project Project1.exe raised exception class EDBEngineError with message
'General SQL error. [Microsoft][Driver ODBC Microsoft Access] Parametri
insufficienti. Previsto 2.'. Process stopped. Use Step or Run to
continue.
Dov'è ke sbaglio?
Sto impazzendo...
Mica posso girarmi tutto il database con un endoffile per cercare il
record
incriminato, deletarlo ed inserirne uno nuovo!
Mi serve una semplice update!
In access questa query funge alla perfezione, perchè in delphi no?
Help me, please.
Ciao, Carlo.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Ciao, Carlo.
-- 
Ciao, Anto', [37, 143, AQ] 
MB C SC 220 CDI Magma Rot
"Di sempre cio' che senti e fai cio' che pensi."
    G.G. Màrquez

 Dalla 5 hai a disposizione i componenti ADO, usa quelli.
Il problema č che in via teorica capisco tutto...
Ma per combinare questi componenti BDE per farli funzionare ci ho messo
una giornata.
Se mi dici come posso fare con piů precisione č meglio perkč č la prima
volta che mi cimento con queste cose e se mi dici "usa i componenti ado"
per me č arabo! Si mangiano ste cose? :P
Se non vi dispiace avrei bisogno di qualcosa di piů dettagliato... O di
capire l'errore, poichč a me serve fare qualche query e niente di piů...
Help please.


 Help please.
Non ho tempo per farti capire l'errore con il BDE, secondo me l'alias che
accede al db access non è configurato bene. Per, ADO, anche se non mi hai
detto che versione hai, trova la palette, dovrebbe essere affianco a
quella BDE, metti un componente TADOQuery sulla form, setta la proprietà
ConnectionString, questo dovresti saperlo fare, e poi procedi come ha già
fatto per il componente TQuery.


 UTENTE="mario"';
Il problema sono i doppi apici (") delle stringhe "ciccio" e "mario". Prova
così:
	Query1.SQL.Clear;
	Query1.SQL.Add('update ActiveConnections');
	Query1.SQL.Add(' set UTENTE=''ciccio''');
	Query1.SQL.Add('where UTENTE=''mario''');
utilizzando cioè gli apici semplici.
Meglio ancora se fai così:
	Query1.SQL.Clear;
	Query1.SQL.Add('update ActiveConnections');
	Query1.SQL.Add(' set UTENTE  = :nuovonome');
	Query1.SQL.Add('where UTENTE = :vecchionome');
	Query1.ParamByName('vecchionome').AsString := 'mario';
	Query1.ParamByName('nuovoonome').AsString  := 'ciccio';
	Query1.ExecSQL;
In quest'ultimo modo ti cauteli nel caso il nome o il cognome contengano
apici a loro volta (es. Massimo D'Alema o Roberto M'aroni - così rispetto
la par condicio:-) ).
Saluti.
	Marco Bortolani
	info @ 
marcobortolani.it

, Carlo Camarda (
chiamac...@tiscalinet.it
) 
proferì le seguenti parole...

Non ho la possibilità di provare, 
ma non è per caso che l'Access interpreta "mario" e "ciccio" come 
parametri? Prova a metterli fra apici singoli anziché doppi. Hai visto 
mai :)
dg