ContributionsMost RecentMost LikesSolutionsDevExpress Spreadsheet SupportCan anyone confirm that Developer Express spreadsheet control is NOT supported by TestComplete? It doesn't appear to be in the list, but I'm hoping that's wrong, because that would ruin my day. DaveRe: Object Driven Testing QuestionThanks, Gena. I'm glad I'm not the only one that was completely lost by it.Re: Automating Repository UpdateBumpRe: Object Driven Testing QuestionSeriously? No one uses ODT?Automating Repository UpdateWe are using TFS as a source code repository for TestComplete. We have several virtual machines allocated specifically for executing automated tests. The test automation project is still fairly young, so scripts are begin frequently updated. The only way I know to update the script library at this time is to launch TestComplete and do a "Get Most Recent" through the UI. This is not practical from the dedicated automation VM's since the number of TC licenses available is limited, team members may have them all in use when the lead wants to run tests. The intention is to run tests using TestExecute from these machines. Is there a way to automate the update process so QA team members can just "launch and go" with the automated library? Has anyone else done this? Any advice? Alternately, if there is a way to use TFS to push the most recent file version, that would also be acceptable. As you can probably guess, I'm no TFS expert. Thanks, DaveSolvedObject Driven Testing QuestionI've read the documentation on the ODT model, it looks like it might be useful, I've played with it.... Frankly, I just don't get it. Has anyone ever implemented a test system using the Object Driven model? Are there any examples? I've searched, couldn't find any. Do you love it, hate it, feel ambivalent to it? The ODT documentation seems to be really thin. There are pretty good descriptions of WHAT it is, but not much about HOW to use it, and virtually nothing about WHY I would want to.SolvedRe: Force Recalculation of DatasheetYes, I like using the aqFileSystem object better. The function is cleaner and I think easier to read. This will be important if my client should ever have to update it after I've moved on. Here is the new function, I'll try to get the formatting right this time: function refresh_Workbook(fname) { if (aqFileSystem.Exists(fname)) { try { var wasReadOnly = aqFileSystem.CheckAttributes(fname, aqFileSystem.faReadOnly); // Save current read-only status for futur reference. // Use Excel to open, save and close the workbook. This forces the recalculation. var fsResult = aqFileSystem.ChangeAttributes(fname, aqFileSystem.faReadOnly, aqFileSystem.fattrFree); // Set file to read/write status. var xl = Sys.OleObject("Excel.Application"); var workbook = xl.Workbooks.Open(fname); xl.DisplayAlerts = false; // Suppress confirmation dialog. workbook.Save(); xl.Quit(); // Restore the read only bit to its orginal state. if (wasReadOnly) { fsResult = aqFileSystem.ChangeAttributes(fname, aqFileSystem.faReadOnly, aqFileSystem.fattrSet); // Set file back to read-only status. } return true; } catch(err) { Log.Error("refreshWorkbook()", "Error " + err.number + ", " + err.description); xl.Quit(); return false; } } else { Log.Warning("refresh_Workbook()", "Excel workbook file '" + fname + "' not found."); return false; } } // function refreshWorkbook() Re: Force Recalculation of DatasheetI'm familiar with FSO, so that's what I grab when I reach into the toolbox. I will have to take a look at the AQ utility though. It might be a little easier to read. Thanks for the tip. DaveRe: Force Recalculation of DatasheetICK!!! Sorry for the ugly formatting.Re: Force Recalculation of DatasheetStarting from Alexei's suggestion, I came up with a solution that seems to be working. It starts with a function I wrote named "refresh_Workbook": function refresh_Workbook(fname) { var BIT_READONLY = 1; var BIT_HIDDEN = 2; var BIT_SYSTEM = 4; var BIT_DIRECTORY = 16; var BIT_ARCHIVE = 32; var BIT_ALL = 255; try { var fso = Sys.OleObject("Scripting.FileSystemObject"); var file = fso.GetFile(fname); var wasReadOnly = file.Attributes & BIT_READONLY; // Save current read/write status. file.Attributes = file.Attributes & ~BIT_READONLY; // Set file to read/write. var xl = Sys.OleObject("Excel.Application"); var workbook = xl.Workbooks.Open(fname); xl.DisplayAlerts = false; workbook.Save(); xl.Quit(); if (wasReadOnly) { file.Attributes = file.Attributes | BIT_READONLY; // Set file to read only. } return true; } catch(err) { Log.Error("refreshWorkbook()", "Error " + err.number + ", " + err.description); xl.Quit(); return false; } } // function refreshWorkbook The var BIT_xxx I use as constants to identify the status bits for a file. The function first generates a file system object pointing at my Excel workbook so I can examine the status bits for that file. I keep the file's current read/write status for future reference. I then set the file to read/write status by toggling the read-only bit off. This is done by doing a bitwise or of the bitwise negation of the BIT_READONLY flag (sounds a bit like a DR. Seuss tongue-twister). I then create an Excel application object so I can open the workbook and save it again. This forces the recalculation, as was suggested. If necessary, I then reset the read only bit for the file.