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
Post a Comment