Non lo so, non devo essere assertivo.Originariamente inviato da alka
Sì o no?
E se no, perché mai?
Sono i casi della vita.Anche su questa affermazione, sarebbe interessante conoscere i motivi, visto che commetto questo "errore concettuale" quotidianamente, per cui mi piacerebbe sapere perché mai sarebbe sbagliato.
Mi sembrava di aver capito che i suggerimenti devono essere possibilisti.Non è obbligatorio rispondere alle discussioni: se lo si vuole fare, si rimanga in tema, si dia il suggerimento che si ritiene opportuno, opzionalmente motivandolo, così che si possa mettere in pratica o confutare, se necessario.
Perchè ci sono i fatti, e le opinioni (per me esistono solo queste ultime)
mah... che ti devo dire? avrai ragioneSe si decide di scrivere solamente delle circonlocuzioni o fare delle "supercazzole", allora meglio astenersi.![]()
a me pareva di aver non solo dato la "soluzione", ma anche le motivazioni... o forse no
EDIT: ri-metto il codicino per la tkbmemtable, mai vorrei essere accusato di circonluzioni o supercazzole
Supponiamo di avere una tabella documenti con ser autoincrementante [visto che vogliamo usarli... sia mai che si possa farne a meno!]
Supponiamo di avere una TABSQUERY chiamata absqryoneshot
Una memTbl (tkbmemtable)
Una funzione ABSXSQL(che non fa altro che una query controllando che il db sia aperto, non ci sia sql injection etc)
questo è/potrebbe essere il modo per popolare un "nuovo" record, ossia una query con un campo chiave sicuramente inesistente che determina il ritorno, però, della struttura della tabella, il che rende superfluo dover mettere i campi "a mano" dentro memtbl o, peggio ancora, crearli a runtime.codice:ABSXSQL(absqryoneshot,'select codicecliente,... from documenti where ser=0'); memTbl.LoadFromDataSet(absqryoneshot,[mtcpoStructure,mtcpoProperties]);
Nel caso in cui, ovviamente, si MODIFICHI un documento esistente, ci vorrà la condizione di selezione "giusta"
EDIT2: per il "dump" (mi sembrava di averlo già messo, ma la vecchiaia avanza...] di una tabella si può usare qualcosa tipo così
absdb: tabsdatabase
chunk:integer; //il numero di "passi" di avanzamento da mostrare
memtbl:tkbmemtable
i,j:integer
abstabella: tabstable
s:string
tralascio evidentemente il try...except
Chiaramente nel caso in cui sei in fase di EDIT (e non di append) devi posizionarti sul record, e fare "edit" anzichè "append".
Vabbè penso sia abbastanza semplice da capire.
codice:absdb.starttransaction; chunk:=(tblMem.recordcount div 10)+1; // il +1 è sempre buono e giusto i:=0; with tblmem do begin First; while not eof do begin inc(i); if (i mod chunk)=0 then begin //...mostra un avanzamento o qualcosa del genere, oppure no end; abstabella.Append; for j:=0 to FieldDefs.count-1 do begin s:=uppercase(fielddefs[j].Name); // abbiamo detto che ci piacciono i campi SER autoincrementanti, o forse no... if s<>'SER' then abstabella.fieldbyname(s).asstring:=fieldbyname(s).asstring; end; abstabella.post; // se sei paranoico qui ci metti il flush del db: se la transazione abortisce "sparisce tutto" Next; end; end; absdb.commit(false);


Rispondi quotando

(vabbè c'è un lieve doppiosenso... per sdrammatizzare!)
