delphi - absolute database batch move -


i use batch component archive old records within table. looked @ example on ace components site unsure how use it. command :

destinationtable.batchmove(sourcetable,tabsbatchmovetype(bmtappend)); 

for task intended use 2 datetimepickers. query go parameters:

select * mytable date between :a1 , :a2 abstquery1.parameters.parambyname ('a1').asdate := datetimepicker1.date; abstquery1.parameters.parambyname ('a2').asdate := datetimepicker2.date; absquery.execsql;  

how incorporate query batchmove command? want retrieved records move source table destination table.

absolute database's batchmove appears modeled after old bde tbatchmove, required 2 ttable components; iirc, didn't work tquery, remembering wrong. (the bde has been deprecated more decade, , haven't used since delphi 1.)

you don't need batchmove, though. can single query (exception handling omitted brevity):

// copy rows destination abstquery1.sql.text := 'insert desttable'#32 +   '(select * mytable date between :a1 , :a2)'; abstquery1.parameters.parambyname ('a1').asdate := datetimepicker1.date; abstquery1.parameters.parambyname ('a2').asdate := datetimepicker2.date; abstquery1.execsql;  abstquery1.close;  // remove them source (you said "move", after all) abstquery1.sql.text := 'delete mytable'#32 +   `where date between :a1 , :a2'; abstquery1.parameters.parambyname ('a1').asdate := datetimepicker1.date; abstquery1.parameters.parambyname ('a2').asdate := datetimepicker2.date; abstquery1.execsql;  abstquery1.close; 

replace desttable name of destination table in first sql statement.

more info in absolute database on-line manual

i haven't used absolute database, if sql support includes scripting (i'll leave research - docs link above) , multiple statements, can in 1 pass:

// note addition of `;` @ end of each sql statement // , change in param names second statement. // dbs allow use 1 pair, , // set value each once. require setting // each twice, , require unique param names. // check documentation absolute db. // abstquery1.sql.text := 'insert desttable'#32 +   '(select * mytable date between :a1 , :a2);'   'delete mytable date between :d1 , :d2;'; abstquery1.parameters.parambyname ('a1').asdate := datetimepicker1.date; abstquery1.parameters.parambyname ('a2').asdate := datetimepicker2.date;  // new param names second pass abstquery1.parameters.parambyname ('d1').asdate := datetimepicker1.date; abstquery1.parameters.parambyname ('d2').asdate := datetimepicker2.date; abstquery1.execsql; abstquery1.close; 

Comments

Popular posts from this blog

jquery - Invalid Assignment Left-Hand Side -

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -