Friday, February 25, 2005


Development 2/25

Just a short tidbit from work last night.

I finally switched Edit over to a different document tab control that seems to be much improved. It has the following improvements from the previous:

1. It looks better :) It has the same look and feel as the rest of the toolbar and menu items.
2. Allows for tab reordering. You can now drag tabs into different positions within the tab list.
3. No flicker when clicking. Now when you click a tab there will not be any of the current flicker where windows min/max or whatever it is that they do currently.
4. Intelligent Ctrl+Tab switching. Ctrl+Tab will now switch documents more like VS in that it Ctrl+Tab will go back to last document and not just cycle through documents. We try to see if this can be user customizable so that it can be turned off and have Ctrl+Tab work like in VS (which will be the default)

Kind of a minor change, but should reduce the current annoyance that is caused when you click on a tab to switch documents along with adding the additional features.

Thursday, February 24, 2005


Using Edit - TODO: Items

There is currently a feature in Edit that most people are unaware of (I'm sure it's my fault :)

In an Edit window type the following:

-- TODO: My first TODO item

Now, press Ctrl+F2. A task list window will appear and will list the TODO item that you just added to your file. If the file you added it to has a filename, then that filename will appear. If there is no filename, then it will indicate that. In () the line number of the TODO item will appear. You can jump to that line number in that file/window by double clicking on the TODO item in the list. The active window should switch to the current window and the cursor should be on the line number that was specifed for the TODO item.

The task list will currently display TODO items for any open query windows. We would like to expand this feature in several ways. We would like to give the task list the ability to look in the database itself and find any procs, functions, triggers that have TODO items listed in them and allow the user to double click on these and have them opened. If the item is object mapped then it would open the mapped file and not the database item instead so the user could work on the source controlled version.

We also thought about making the TODO line non-editable by users and having the TODO process managed by the app. This would allow the user to add more TODO info such as user, status, etc., and allow the user to change the status of TODO items, add additional info, assign to users, etc., such that when viewing the task list, users could view TODO items specific to them, of a specific status, etc.

Try out the TODO feature now and see if you think it is useful in its current state and if it would be useful with the changes listed above or if you have changes you think that would make it even more useful.

Please post forum topics under the subject "BLOG:TODO Tasks".


Developer 2/24

The last several days development had mainly been on small items such as small fixes and items posted by users. We have added the following new items so far this week:

1. Ability to script constraints
2. AutoReplacements that span multiple lines will now be inserted at current indentation level.
3. UDFs that return tables will now provide Intellisense for the columns, ie. select * from dbo.udfThatReturnsTable() f where f.[Column List should appear here]
4. Fixed some issues with the syntax generated when executing a sproc to make it include named parameters.
5. Included OUTPUT for out parms when they are inserted by intellisense
6. Added ability to have lists and data lists in SQL templates.
7. A content divider will now appear under "go" to provide visual separation of batches. (Default is ON, can be turned OFF)

Also fixed an issue where intellisense would replace what user typed with closest matched item, some other fixes as well.

We did change the visual display such that the document list now takes up the entire width of the app and works slightly different. Instead of the <> to loop through tabs, it now has a drop down when there are more tabs, much like what you get when there are more toolbar options to display. The reason for this move is to first of all to go with a single control suite for menuing and toolbars and also this new method fixes the problem that occurs currently when clicking on a toolbar item and having the windows do whatever it is they do where they go to normal size then re-maximize. This should make the windows flicker-less when switching by clicking on a doc tab.

We are also looking at possible providing tooltip items when a user hovers over text in the editor. So, when hovering over a table or column, a tooltip item will be presented that might contain some information. For a column, we thought about maybe having datatype (although datatype would most likely come from looking up column in database and not specific to the current context. Not sure how useful this would be since it could br wrong but would take too much time to parse and determine what table column came from, maybe).

Not sure what info would be helpful for stored procs or tables or functions. Maybe list of params, MS_Description property or something else? If you have ideas, please post them on the forums with the subject NEW FEATURE:Tooltips so other readers of the blog will see the post and we can attempt to keep all posts to this together.

I have also done some more testing with my SCC interface and it looks like it is about ready to be inserted. I plan to test some object mappings against an SCC system tonight using the interface. This will involve manually changing the object mapping file to include info specific to SCC integration. If this works we will go about fully integrating SCC into Edit. Once the integration is finished we will begin with the Object Mapping Mgmt screen to manage the object mapping process.

That's all for developmkent today, please post on the forums if you have questions or issues.


Friday, February 18, 2005


Using Edit - Hide/Show Items in Explorer

Using ApexSQL Edit, some of the things you can do to make your life less cluttered is to use the features of the application to hide information not relevant to what you are working on.

Edit provides several means to help clean up the clutter. One feature Edit provides is the ability to completely hide a database from the schema listing. How many of us have ever opened up model ot tempb to see what's in there. Basically these databases (and most likely master and msdb) just sit on the list of databases and take up room. Using Edit, you can right click on a database to bring up its context menu and pick the "Hide Database" option to remove the database from the listing. You can hide as many databases as you choose to. To make the hidden databases visible again you can right click on the server and choose the "Show All Databases" option.

Speaking of right clicking on the Server node, did you know you can print the schema treeview to printer. Simply right click on the server node and choose either print or print preview to view the treeview (as it currently appears now) and print it.

In addition to hiding databases, you can also add individual items within a database. There is not current UI to handle this, but you can add nodes to the Settings.xml file to have items excluded from the schema explorer.

The setting (you can have any number of excludes) takes a regular expression and will exclude anything that matches the RegEx value. For example, the following would exclude any object that started with sp_ (ie. system sprocs):


Want to exclude those pesky dt_ tables:


The items need to go in the Settings.xml file located in the main Edit directory underneath the Settings node, ie:



The SchemaExcludes are a temporary feature until Edit can provide a full featured filtering system for displaying objects. The system we have planned will provide exclude and include plans with the ability to quickly switch between defined plans so you will be able to create filtering that includes all objects related to specific applications.

If you have a topic you would like to see explained in these Using Edit posts, please let us know through email or on the forums.


Wednesday, February 16, 2005


Development 2/16

Well, had a busy day on the forums today answering user suggestions, issues, questions. I did get a lot of items that should make it in v2.16 which will probably be available 2nd week or so of March.

While I am getting things in order to start on SCC integration next week, I have been working on adding a new Intellisense like feature that I'm calling Value Lists. How this will work is that it will take actual data based off of items provided automatically by Edit or customized by the user and will show data values in an intellisense type method to the user.

As an example, take the Customers table in Northwind. If the user were to type:

select * from customers where customerid =

At the point where the user types the "=", a list would appear will all of the items from the customer table such that it would show something like:

ALFKI - Alfred...
BEANC - ...

The user could then pick a value from the list or press the ESC key to cancel out of the list like normal.

How this would work would be that it would look at the column prior to the "=" and see that it is CustomerID, it would then look up CustomerID in a list similar to how it works for quick info and if the column was found (along with table/database/server/owner/schema matches) then it would display data from that table. This would also work if the user did the following query:

select * from orders where customerid =

Again, here the user would be shown a list of users for them to pick and insert into the script. The list itself could be turned on/off and the columns for which data values or displayed could be customized as well. This feature should really help when dealing with foreign keys or codes where you try to filter by some code or key that is not obvious or not well know. For example, you may not have a list for a Sex column, but a State column might have:

AK - Alaska
AL - Alabama
AR - Arkansas
AZ - Arizona

Another feature we are looking at for v2.16 is the ability to create project workspaces which can contain several types of items such as script files on disk as well as schema objects. The project would provide an easy way to deal with scripts and schema objects so that you could group items into a project metaphor and work on them that way. The project workspace could also have interchangeable connections such that you will be able to pick the connection for the workspace and have that connection applied to all queries. We are hoping that this will make it easier to manage projects that involve many script files but that also use schema objects.

For displaying the project workspace, I am thinking about displaying an additional schema tab with the workspace objects in place of the current server/database/object items. The workspace would then work similar to the current schema in that it would let users group things into folders, right click to open, etc. The list of items we want for project workspaces may be more exhaustive than what we can get into v2.16 but we hope to have an initial stab at it in the v2.16 release.

Saturday, February 12, 2005


Release 2/12

After a suggestion in the forums, we have changed how we calculate initial result grid sizes. The change should make viewing vertical results more useful. Below is a sample image from running sp_help 'sysobjects' and the resulting view of how results are spaced:

Thursday, February 10, 2005


Release 2/10

Well, I finally wrapped up the v2.15 release late last night and turned it over for placement on the web site. I wasn't able to get all the things I wanted in v2.15 such as server drop down, changes to statement log viewer, and object mapping but each had valid reasons to be moved to a future release.

Since we plan to begin including SCC support in Edit with the v2.16 release, the Object Mapping piece just made since to move to that release since it will have to integrate with SCC as well so there was no need designing something for v2.15 and then redesigning it for v2.16. The server drop down and statement log viewer items also got nixed for this release because of implementation issues. They should make it into v2.16.

I am happy with what made it into this new release. Around 10 or so issues were fixed, with a couple of them generating the majority of the exception reports I receive. Maybe now my email want fill up as quick :) This release also finally adds vertical results so that multiple result sets (including XML results) can be displayed in a single tab vertically instead of multiple horizontal tabs. I was also able to get rid of using the HTML browser control for XML result sets and use the editor control after getting XML outlining and syntax highlighting to work like I want.

Also added some nice new items to Quick Info that make it more useable. Added the ability to have multiple queries for a single column and also to allow additional data from the resultset to be used in the query. The quick info window can now also stay open even when the user clicks back in the editor, allowing a "tidbit" of info to remain visible.

Also added a new Alias feature to let users pre-define aliases for tables so that the user can use the alias in the select clause to bring up column list before defining the table. There is even a setting to have the alias auto-inserted when the user picks the table from a drop down list.

Some smaller features were also added such as the ability to see release notes, ApexSQL forums, and newsgroups in the editor directly, auto fit of result columns, additional features on object search screen, advanced grid copying in the result grid, as well as the ability to easily copy a range of cells to the clipboard. You can now click in a cell, hold down the shift button and click in a different cell, and the range of values with be copied to the clipboard in Excel format (tabs between columns, CRLF between rows). This should make it easier to copy ranges of values from the grid to other programs.

Most of the new items were added based off of user requests on the forums so please continue to post new items on the forums as well as report any issues. For v2.16 some of the features I want to add include SCC, Object Mapping, Projects (ability to create projects with script files, results, etc and open them all up so that a project can be worked on easily), a TODO UI screen (type -- TODO: Some text on a line and then press Ctrl+F2 to see TODO now), expand TODO to look in database objects that are not currently open, table editing feature to let user edit table columns, drop object ability, permission viewer/modified, and other small fixes.

All of the above may not make it into the next version, but the primary focus will be on SCC, Object Mapping, and then table editing, projects, and TODO.

Thanks and keep "Edit"-ing - Ashton

Tuesday, February 08, 2005


Development 2/8

Continuing to work on v2.15 in an attempt to get it release this week. Fixed several additional bugs dealing with various issues. Also modified the Ctrl+Space intellilist prompts in some instances to provide more context information. If the cursor is at the end of a @ or @@ parameter and the user presses Ctrl+Space, then the list will contain appropriate parameter values.

Also, if the user presses Ctrl+Tab while in the insert () column listing, the user will receive the column list for the table and when the user is in the context of {table}.{col} and the user brings up the intellilist, it should display relevant column information.

We also added the ability to select a range of rows/cols in the grid and have the results copied to the clipboard. When the user selects a cell in the results grid using the mouse, if the user then holds down the SHIFT key and selects another cell, then range of cells will be copied to the clipboard, with the information bounded by the top-left most cell and bottom-right most cell.

We currently have 3 more bugs, 2 issues, and 1 enhancment left before we are ready to release this version. Please check the forums or this blog for additional information.


The Edit Team

Tuesday, February 01, 2005


Development 2/1

I added a new feature to Edit that may provide some additional benefit to users. A new tab was added to the options dialog that allows the user to specify aliases for objects, specifically tables and views. These aliases will be used in the editor whenever the user tries to bring up a column list for an alias that has not been defined yet.

For example, if the alias cust is defined for the table customers, then when typing the select clause, the user can use the cust alias and still get column info before defining the from clause so that the alias can provide column information before the user has defined it so that the select clause can provide Intellisense without forcing the user to define the from clause first. The aliases can be defined from very specific (assigned to server/database) to very general (any server/any database). When Intellisense has an alias that it cannot resolve in the current context, it will look in the aliases definitions from the most specific to the least specific for a matching object and then attempt to show Intellisense columns for that alias.

We are also "thinking" about providing an optional switch that would let the user have the table/view Intellisense automatically insert the defined alias when the user picks a table/view from the list. The system would do a reverse alias lookup and find the object and then insert the alias for the user. This would help a user keep tables aliased in the same way once defined.

This page is powered by Blogger. Isn't yours?