Showing posts with label Power. Show all posts
Showing posts with label Power. Show all posts

Friday, July 12, 2013

Review: Open-source freebie jPDF Tweak gives you power over your PDFs

AppId is over the quota
AppId is over the quota
jPDF Tweak This Java-based application provides a variety of PDF functions such as combine, encrypt, rotate, split, and watermark.

Download Now

Open-source developer Michael Schierl describes jPDF Tweak as the "Swiss Army Knife for PDF Files," and it certainly lives up to that promise. Like a real Swiss Army Knife, jPDF provides a variety of functions for your PDF files. This includes making printable booklets, combining PDF files, adding watermarks, rotating pages, encrypting files, changing the metadata, and more. I love this program so much that it has a permanent place on my PC.

This Java-based portable app makes a nice addition to the road warrior's USB drive or Dropbox folder. Simply double-click the BAT file to run it.  Then load the PDF file from your PC in the "input tab" and choose the next tab you need. When you've made whatever changes you need, go to the "output" tab to generate your tweaked PDF.

Bear in mind, though, that if a PDF has existing restrictions protected by a password, that password will hold. jPDF Tweak does not allow you to remove or break the password of a PDF file.

Note: The Download button takes you to the vendor's site, where you can download the latest version of the software appropriate to your system.


View the original article here

Wednesday, December 26, 2012

Intro to Power View for Excel 2013

AppId is over the quota
AppId is over the quota

image

This blog post is brought to you by Allie Rutherford a Program Manager on the Excel team.

Have you ever looked at a dashboard someone made and went, “man, I like that, but there’s too many steps for me to remember”? Or maybe wanted to have a way to play around with your data in a safe space so you don’t mess it up?

Power View is a new add-in for Excel 2013 that consumes the Data Model. For those who are avid readers of our blog, you will remember Diego did a post on the Data Model we’ve integrated into Excel. If you don’t remember that post (because not all of us are perfect), the gist is that there’s a new way to have lots of data in Excel and not slow it down while also having handy things like relationships (to make your handy dandy new in-workbook cube relational). Another thing to note is that the Power View add-in comes installed by default in Professional Plus versions of Office.

The point of Power View is to make it very easy to create pretty, interactive data presentations (or “reports” as the experts call them) that will make your boss go “Wow, how did you do that? You’re a genius!” Well, OK, maybe not that far but you’ll definitely look super smart. Plus, it also can be used to explore your data visually without worrying about messing anything up and even make reports on your own, without IT help.

Some of you may be quizzical and asking yourselves, “But… Doesn’t Excel already have graphs and charts and visualizations?” To which I would say, “Yes!!” and probably also add that with Power View, you get automatic cross-filtering of visualizations, new visualizations that aren’t in Excel (such as a "play" axis, maps, and cards), a free-form canvas that doesn't have the restriction of gridlines (no more messing up alignment because you inserted a new row!), unique filtering options (e.g. sliders), and support for images. Plus, if you’re a data head, you’ll be excited to know that Power View sheets in Excel can also be hooked up to external data models (i.e. Analysis Services Tabular Models).

For this post, I’ll be stealing borrowing the workbook Diego made for his house hunt. So, to *help* Diego find a new house, I *borrowed* his already-modeled workbook and booted up Excel. Then, I inserted a Power View sheet…

1. Click on the “Insert” tab

2. In the middle of the ribbon, click on the “Power View” button in the Reports section (to the right of the Charts section)

clip_image001

3. If this is the first time you have used Power View, you’ll get a dialog asking you to enable the add-in. Go ahead and hit Enable so we can get started.

clip_image002

If you hit cancel, you’ll have to go to step 1 and we’ll be here all day.

4. If you don’t have Silverlight installed, you’ll have to install it. Power View needs it to render all those pretty visualizations you’re going to make. Good thing we have this nice bar that comes up to give you a handy link:

clip_image004

5. After you’re done installing Silverlight, go ahead and hit the “Reload” button on the bar there. You should now get a blank Power View. Whoohoo! Your first Power View. I’m so proud!

First things first: titles.

1. On your Power View sheet, click in the title text box at the top of the sheet and type “Where to buy a house?” Titles are important, people! Don’t skip this part, it’s definitely essential to the whole shebang.

Second things second: we are going to put the data on a map so we don’t have to stare at it in table form, scratching our heads, wondering where this “Ravenna” place is and whether it has views of Puget Sound. (hint: it doesn’t)

1. In the field list on the right side of the screen, from Table1, check the checkboxes next to LIST PRICE and IS SHORT SALE. You should now have a table on the Power View canvas. VoilĂ !

clip_image006

What, a drag-n-drop table isn’t cool enough for you?

2. I want to visualize this data on a map (as people like to have something to look at to see what’s what), so I click on the table, then click the “Map” button on the Design ribbon tab.

clip_image008

3. Now, I have a map but I forgot to add location information, so there’s nothing on it. Don’t fear, it’s easy to fix! Just click on “All” in the field list (look at the tippy top) and drag “GeographyID” (aka the zip codes) from the demog1 table to the “Locations” well. The map zooms in to your locations! Fun.

4. Next, check LONGITUDE and LATITUDE from Table1. They should populate into the “Longitude” and “Latitude” well.

5. Next, change the aggregation function for LIST PRICE to average (as seeing a sum for an area is really not helpful. To do this, click the arrow next to the LIST PRICE field in the “Size” well and then click on “Average” in the drop down menu that appears:

clip_image009

6. Finally, drag ADDRESS from Table1 in the field list below GeographyID in the “Details” well. This will give us a “hierarchy” of locations; this means we can double click on a bubble on the graph and it will change the view to the next field level down in the Locations well. In our case, it will go from Zip Codes (demog1’s GeographyID) to the address level for houses (Table1’s ADDRESS)

7. Now, you should have a map that can tell you there are a lot of short sales going on in certain Zipcodes. What’s up 98122? You should have something like this:

clip_image011

Remember, double clicking on any point will bring you to the address level-view for those homes. To get back to the GeographyID or Zipcode level, there’ll be an Arrow icon next to the filter one. Nifty, huh?

Since I’m happy with the map, let’s move on to something else that’s just as cool: Bubble charts! (no soap required)

1. To put a new visualization on the sheet, first click on empty canvas space (anything blank on the Power View sheet).

2. In the field list, check the checkboxes next to demog1’s UnemploymentRate, MedianAge2010, TotalHouseholds2010, and GeographyID. From Table1, check Location.

(NB: you’re going to see the “Relationships may be needed” warning, but we already have the relationships we need for this example. You’re seeing that because Location isn’t in the primary table, but since GeographyID is in the primary table, it can be used by Power View to differentiate each row)

3. In the Design tab, click on the “Other Chart” button and select “Scatter”. Move LOCATION to above GeographyID from the “Color” well in the field list.

4. Change the aggregation functions for the fields in the “X Value”, “Y Value”, and “Size” wells to Average.

5. Next, drag the Beds and Baths fields from Table1 and drop them on the Filters pane (to the right of the canvas, left of the field list).

6. Move the slider for Beds to “Greater than three.”

7. Click the switch filter mode button twice to get to the Advanced Filter Mode and type in “2” to the text box and hit “apply filter.”

clip_image013

8. Now, Diego can decide from all the 3 bed, 2 bath houses in the Seattle area. Here’s the Power View sheet we end up with:

clip_image015

Looks to me like he should look for a house in Fremont, as it’s got a nice median age and a low unemployment rate, as well as no short sales! I feel so helpful now. Wait, isn’t that the same conclusion Diego came up with last time? Well, now Diego can easily justify his decision with a beautiful, interactive report.

Also, I just put together something that’s fun to click around on and explore. Try clicking on a neighborhood in the bubble chart and watch the map filter! Maybe I’ll start looking for a house now that I have such an awesome way to dig around in the data.

In this post, we did a few things: insert a Power View sheet, create a map visualization, create a bubble chart, and add filtering to the whole sheet. I made something that looks pretty complicated in way fewer steps than you’d think.

For a more detailed demo of Power View, check out Sean Boon’s Olympic series here.

For more info on using Power View, check out these articles on Power View and What's New in Power View for Excel 2013.

-- Allie


View the original article here

Tuesday, March 13, 2012

Three Power Tips for Reading the Office Blog

AppId is over the quota
AppId is over the quota

This post is written by Craig Kerwien, the Director of Site Management in the Office Division Product Management Group.

Girl reading the Office Blog app on a Windows PhoneWe're all about productivity and getting things done here in the back offices of the Office Blog command center. We've made a few changes to the blog in the past several months that make it super easy to read  and keep up with our latest posts. All you need to know are these three power tips.

Tip# 1:  Use all of Outlook's nifty RSS features

Do you use an RSS reader? Chances are good you already have one - Outlook comes with most editions of Office today (except for Home & Student), and it has a few cool reading features built in:

Share how to add the main feedMove feed shortcut up to favoritesTeach how to find the other RSS feeds so people can plug in or use another reader.Provide feed list

Tip# 2:  Read the Office Blog on your Windows Phone                    

Have a Windows Phone? We just released a quick simple app that you lets scan the latest blog headlines, click a post, and read it on your phone. If you don't have a Windows Phone, then you can just use your favorite RSS reader on your mobile device and plug in any of the RSS feeds shared above.

Creating a Windows Phone App for the blog was a fun little side project for us. We used a simple Windows Phone app toolkit from Microsoft Evangelist Chris Koenig and created it in a weekend. If you'd like to learn more about how we created the app, check out this behind-the-scenes post.

Tip# 3:  Pin Office Blog to your task bar

Do you use IE9 and Windows 7? Then you can pin the Office Blogs to your task bar for an easy way to scan the latest posts or go directly to the Office Blog or Office app home pages. 

-- Craig Kerwien


View the original article here

Friday, February 10, 2012

The power of teamwork

AppId is over the quota

As a boys' basketball coach, I always tell my sons that if you want to be a star, you've got to learn teamwork. If you hog the ball and constantly try to you and your team score aufpeppen eleven are going to get, both creamed. But if you know where your teammates are on the court, if you're constantly watching to see who's open and frequently pass the ball, you're going to find opportunities to score.

The same is true for business. From the wisdom of crowds to teamwork makes the Dreamwork, numerous books have pointed to the incredible benefits organizations can reap by getting their staff to work effectively as a team. Often, however, the problem is structuring the work environment to make it possible for teams to thrive. Without on underlying infrastructure that makes it easy to share information and collaborate, teamwork can be as difficult as a lone basketball player squaring off against a team of Kobe Bryant.

One of the benefits of Microsoft Office 365 is that it provides the infrastructure for collaboration and information sharing. With Microsoft SharePoint online, a component of Office 365, organizations can create sites that let them easily share information and collaborate with colleagues and customers. With Microsoft Lync online, they can connect seamlessly with others through instant messaging, video conferences, and online meetings.

Collaborating effectively couldn't be more critical for SKARF, a medical research and treatment center in Denmark. The organization networks with researchers across the globe to discover, share, and advance knowledge around effective cardiovascular medicine and treatments.  "In order for research to be accurate and thorough, it's important that a lot of stakeholders contribute to it," says Kristian Wachtell, a cardiologist at SKARF. "We need easy, almost ways to share knowledge and ideas across borders so we can improve productivity."

The organization had been ex changing drafts and comments with other researchers via email. However, it what cumbersome to manage and consolidate the information it received. Based on a recommendation from its IT support firm, ProActive, SKARF decided to try Office 365 for its collaboration features.

Rather than emailing documents back and forth for feedback, researchers now use the co-authoring feature in Microsoft Word 2010 hosted by SharePoint online to make edits simultaneously. "SharePoint online is exactly what we need to quickly and easily share data and files," Wachtell says. "We're definitely more productive." "We're probably cutting down document creation time by 25 percent."

The organization also uses Lync online to hold web conferences, reducing the need for researchers to travel to universities and other research centers to share information about the latest research. "Being able to share what's on our desktops and talk about it in real time expands our horizons," Wachtell says. "We can cut travel time in half and save the company $50,000 annually - that's a significant savings."

Being able to collaborate more productively has made it possible for the researchers to work together better in teams. They're so completing projects faster, which means they can take on more work. "This kind of collaboration is vital to US," says Wachtell. "Office 365 helps US perform better, work more productively, and increase our workload capacity." (Click here to check out the full SKARF case study.)

Has Office 365 improved teamwork in your organization? Feel free to leave a comment.


View the original article here

Monday, May 30, 2011

Power tip: Use the form property for the subform in the code refer to

Today's power tip is provided by Juan Soto.

I love of form variables. It my code faster and easier to read, and they also offer a great way to remote control another form without is in this form or have it focus. Another advantage is that reading data record values from a form faster than using a Recordset much use a table from the hard disk. If you know that the data you are looking for is already loaded on a form, the read you a form variable can speed up your application.

For example, suppose I am coding in a form with the name of FrmOrders and I need called to controls on an open form (you can only a form variable to an open form map) FrmCustomers read. I would use the following code to my variable instantiate:

Dim frm as Form_frmCustomers
Dim LngCustomerID as long

If CurrentProject.AllForms("frmCustomers").IsLoaded, then
Set frm = forms! FrmCustomers
' Use the frm variable fields from the form read
LngCustomerID = Frm.CustomerID
Else
"To a different technique to CustomerID find using"
End if

The frm as Form_frmCustomers instead of the generic type form declare one of the advantages, that IntelliSense is opens so that you refer to controls on the form. You can do this with any shape, which is already loaded. So make sure that you followed by the name of the form "Form_" at the declare variable of this type use.

Subforms will lose as part of the main form and their own identity, as soon as they are loaded. A subform to reference, you must use the form property to associate the form variable contains the subform. We take on FrmOrders is the parent form and the name of the subform in FrmOrdersis FrmOrderItems_sub . If you need to reference the subform, this could do in the following thing:

Dim frm as Form_frmOrderItems_sub

Set frm = forms! frmCustomers. frmOrderItems_sub.Form

See the note on the .Form property at the end of the second statement, which is required to the variable frmsubform map.

Note 1: You can use only form variables in forms that have modules; Otherwise, the compiler will error out.

Note 2: Make sure that you reference the correct name of the subform to the main form or the code will not work. For example, if the subform control has a SourceObject is set to a form named "FrmOrderItems_sub", but a control name of "Order items" on the main form has code should look then like this:
Dim frm as Form_frmOrderItems_sub

Set frm = forms! frmCustomers.OrderItems.Form

I encourage you start in your code using form variables, if you need to reference a form from one other. It is another great tool in access, which facilitates sharing information about your application and may even accelerate it.

Juan Soto is senior Access developers at AccessExperts.net. His blog is at AccessExperts.net/blog. You can subscribe to it here. Juan is a frequent speaker at access and SQL Server user groups nationwide and is a contribution to the access blog.

Send your power tips to accpower@microsoft.com!

--Chris downs


View the original article here

Tuesday, April 26, 2011

Earth Day and the Power of Personal Connections

Today is Earth Day, and in 2011 we are encouraged by the Earth Day Network to join its “people-powered” campaign of pledging our acts of environmental service, with the goal of reaching a billion Acts of Green by 2012. It’s no secret that as a company, Adobe has been at the forefront of implementing green operating practices – in fact, we were the world’s first business to achieve four Platinum-level certifications for energy and environmental design excellence by the U.S. Green Building Council.

This year I also find myself reflecting on the various ways that our enterprise technology helps organizations leverage green business practices that ultimately help them decrease their environmental footprint, while increasing business efficiency and connecting people across geographies and time zones.

Acrobat solutions allow our customers to reduce the use of paper documents, while Adobe Connect makes it possible for people to collaborate and communicate globally in real time, helping reduce business travel and its related environmental impact.

For example, the U.S. Government Printing Office was able to save 20 million tons of paper over five years by using Acrobat and LiveCycle to generate, authenticate and share documents electronically. Adobe Connect enabled more than 50,000 SAP employees to communicate around the world instantly, reducing the company’s travel by as much as 90%.

And all along we have been focused with our Customer Experience Management platform on delivering highly personalized, engaging online interactions between enterprises and their customers to power great customer experiences that build brand loyalty without all the environmental damage caused by burning fuel for worldwide travel and wasting paper when electronic means would suffice.

That’s why I found it so interesting when I heard recently about an acquaintance who received a personal, handwritten note – not a personalized email – from leading online retailer Amazon.com, thanking him for his business over the past nine years.  That act of personal outreach had a marked impact.  He not only felt valued by Amazon.com after receiving this note, he now associates a human face with the company.

Can this be done in more environmentally friendly ways?  Of course it can.  Record a quick Flash video and send it on to someone you want to thank.  Send them a personalized PDF portfolio complete with pictures of past experiences together.  The Amazon story is about personal touch – about a real person inside a company reaching out to another real person to establish trust and loyalty.  Just because we are using greener means to communicate doesn’t mean we have to lose the essence of one-to-one personal communication.  In fact in many cases the technology allows us to do it more effectively.

This act of a real person at Amazon.com reaching out to a customer in a very personal way underscores the desire for us to connect with each other, even in our always-on, always-connected online business and personal lives.

We have powerful technology that enables us to know our customers and connect across geographies without the need to ever leave our offices — and that’s a great thing. Yet, we shouldn’t forget that behind the technology lie people.

And so on this Earth Day, I’m going to follow the “people-powered” examples of the Earth Day Network and leverage our great technologies to send something personal – you should do the same!

– Rob

Follow me on Twitter for more perspectives.


View the original article here

Wednesday, April 13, 2011

Power tip: Improve the security of the database connections

Translate Request has too much data
Parameter name: request
Translate Request has too much data
Parameter name: request

This post about making ODBC connections more secure is provided by Access MVP Ben Clothier.

Now and then, we come to a point where we decide to upsize an Access database to a server-based RDBMS. The reasons for upsizing can vary, but a common theme is security. With a server-based RDBMS, we have more options for security than when we are working with a file-based data source. Even if security wasn’t the reason for upsizing, we do have an obligation to ensure that we develop a “good citizen” application and protect the company’s assets contained in the RDBMS. When our RDBMS supports Windows authentication (e.g., SQL Server, Oracle, FireBird), we have it easy – no username or password needs to be stored. But unfortunately, we don’t always have Windows authentication available, and even when it is supported, it may not be practical. This article focuses on the case where we have to pass in a username and password as a part of the connection string and we want to do so in a secure manner. The article also assumes we are using ODBC and DAO.

By default, Access offers to set up a Data Source Name (DSN) when we want to create a new linked table. As a matter of development, the DSN is quite convenient, giving us a graphic method to quickly build and specify an ODBC connection string without having to remember all of the syntax and parameters. Unfortunately, when the time comes for deployment, using DSNs has a host of problems, especially security. Let’s quickly review a few of the security holes associated with using DSNs.

Save password check box in Link Tables dialog box 
Figure 1

When we link a new ODBC table, Access defaults to not saving the password when we select a DSN. We have to select Save Password to do so, as seen in Figure 1. Recent versions of Access warn that the password will be saved as plaintext. If we ignore the warning and save the password anyway, the password is saved in the Access system table, MSysObjects, as plaintext. You can see an example of this in Figure 2.

Passwords saved as plain text in the MSysObjects table 
Figure 2

So, let’s elect not to save the password. Does that resolve the problem? Unfortunately, not necessarily. When we create a DSN, the data used to build connection strings is stored in a registry entry. Let’s see how the DSN for a MySQL database is structured. You can find it in the registry node shown in Figure 3.

Password saved as plain text in the system registry 
Figure 3

Here, the password is stored in the registry as plaintext, so even though we didn’t check the Save Password option, and our Connect wouldn’t list Password anywhere in the database itself, it’s still there for the taking. Yikes. Even worse, storing passwords is a vendor-specific implementation. The PostgreSQL ODBC driver also stores passwords as plaintext, but the Firebird ODBC driver always encrypts the password. SQL Server ODBC drivers will never try to store a SQL Server authentication password, no matter what. Considering the large number of different ODBC drivers, including third-party drivers for the same RDBMS, I’d rather not have to track the specific oddities of each ODBC driver and accommodate each one of them as I move from RDBMS to RDBMS.

We can say, “Let’s not define the password in the DSN, requiring the user to complete the connection at runtime.” Indeed, we can do that, but we now run into a new problem that also plagues the SQL Server ODBC driver. Every time a user opens an Access object that either is, or depends on, an ODBC object, the user will be prompted to enter their password for that ODBC connection. This does not make for a great user experience, not to mention several additional issues raised by showing users the dialog box for configuring the ODBC driver, which exposes options you may not want users to tinker with.

So in short, using DSNs may be convenient, but it can be problematic to implement in a secure manner. Moreover, because the specifics of implementation vary by ODBC driver, there is no good general solution for designing a secure DSN. Therefore, we should consider DSN-less connection strings. Though DSN-less connections per se are not necessarily more secure, the additional security comes from the fact that they can be disposable, which becomes very important, as we’ll see shortly.

Access MVP Douglas J. Steele has posted a sample of building a DSN-less connection in VBA for a SQL Server backend. Doug recently updated the material, incorporating modifications suggested by George Hepworth, another Access MVP, to support both trusted connections and SQL Server authentication. This document provides us an excellent starting point to learn how we can build DSN-less connections. We’ll also learn how we can ensure that all linked tables will be updatable by adding a unique index local to Access.

There is an interesting behavior in Access we want to take advantage of. When Access opens an ODBC connection, it caches that connection. Any subsequent ODBC objects that happen to match on three parameters—ODBC driver, server, and database—will reuse that cached connection. This means we don’t have to specify the full connection string for all ODBC objects each time. We only need to supply the complete connection string once at startup and store only the incomplete connection string. We can then leave it up to Access to match subsequent ODBC objects to that cached connection string. This helps immensely in simplifying the security setup.

During application startup, we want to call a routine that will create a temporary query that contains the complete connection. Then we can discard that query at end of the routine. Procedure InitConnect demonstrates this crucial step.

Public Function InitConnect(UserName As String, Password As String) As Boolean
' Description:  Should be called in the application's startup
'               to ensure that Access has a cached connection
'               for all other ODBC objects' use.
On Error GoTo ErrHandler

    Dim dbCurrent As DAO.Database
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset
'

    strConnection = "ODBC;DRIVER={MySQL ODBC 5.1 Driver};" & _
"Server=" & ServerAddress & ";" & _
"Port=" & PortNum & ";" & _
"Option=" & Opt & ";" & _  'MySql-specific configuration
"Stmt=;" & _
"Database=" & DbName & ";"
Set dbCurrent = DBEngine(0)(0)
Set qdf = dbCurrent.CreateQueryDef("")
With qdf
.Connect = strConnection & _
"Uid=" & UserName & ";" & _
"Pwd=" & Password
.SQL = "SELECT CURRENT_USER();"
Set rst = .OpenRecordset(dbOpenSnapshot, dbSQLPassThrough)
End With
InitConnect = True

ExitProcedure:
On Error Resume Next
Set rst = Nothing
Set qdf = Nothing
Set dbCurrent = Nothing
Exit Function
ErrHandler:
InitConnect = False
MsgBox Err.Description & " (" & Err.Number & ") encountered", _
vbOKOnly + vbCritical, "InitConnect"
Resume ExitProcedure
Resume
End Function

Even though we discard the query at the end of the procedure, Access holds onto the connection it created behind the scenes. As far as I know, there is no programmatic access to this cached connection.  However, once it exists, you can open any other ODBC objects that match on driver, server, and database parameters and interact with it as if it did have the complete connection string. Figure 4 shows a table opened without any additional prompt after we run the procedure at startup. Even though it does not have the complete connection string, Access used the cached connection created by InitConnect so there’s no need to prompt the user for missing information.

Linked table with connect string displayed as a tooltip 
Figure 4

With this technique, you can now implement a custom login form to have users enter their username and credentials at runtime and call the InitConnect procedure. That information is passed to the code snippet illustrated above to create the connection. You now have an application that does not store the password anywhere, inside or outside the file. Although that won’t stop your users from penciling their password on a note taped to their monitor, you can be confident that, if the file was copied and taken outside the building, it would be useless; more so if the connection requires being within a certain network. (Certain IP addresses such as 192.168.*.* are not world-accessible and require a physical connection to a particular DHCP server or at least VPN or similar tunneling software.)

Figure 5

As Figure 5 shows, we should remember that linked tables aren’t the only objects to have a Connect property –passthrough queries can have a Connect property that also needs to be maintained. Fortunately, those queries can also share the cached connection so there should be no reason for us to store a complete connection string for them. We only need to ensure that all passthrough queries have the minimum of three required parameters and we’re done.

There is a hole we need to close – the cached connection does not close when we close the database but do not quit Access. In other words, if a user closed your application and opened their own databases, they wouldn’t be prevented from accessing the same ODBC objects using the cached connection. Fortunately, that is fairly easy to remedy – when the last form closes, forcing Access to quit will usually ensure that the cached connection is properly disposed of at the end of your application’s session. This guarantees that users will be always required to explicitly log in when they open Access and attempt to access the ODBC sources.

When you’ve implemented an incomplete connection string, the file no longer can be simply copied around. If someone attempts to bypass the login routine, the tables and queries will not be able to connect. Double-clicking on those objects would simply give them the ODBC driver’s dialog box asking them to complete the connection. Because the password isn’t stored anywhere, they can’t just look under the doormat. Though encrypting the password is an option, it’s much more preferable not to store any password and require the user to supply it just in time. Encrypting the password and storing it in the file is analogous to putting your confidential information in a small safe and leaving it out in your front yard. Anybody can just take your small safe somewhere else and take as much time as they want to crack the password. True security comes in not having anything available for taking and blocking access rather than making access harder.

For additional security options, you may want to look into creating an MSysConf table on your RDBMS server to ensure that Access won’t offer to save passwords locally. For those who do not want to have users log in and enter a password, Access MVP Tom van Stiphout’s example of using Active Directory to provide user-level access control for Access forms can be used as a model for implementing authentication via third-party server (e.g., Active Directory). If you're just getting started with connect strings, you can go to Carl Prothman’s site and ConnectionStrings to find excellent repositories of complete connection strings, though you may want to go to your ODBC driver’s vendor for the most up-to-date and complete documentation. Finally, check out George Hepworth's site for lots of tips, demos, and downloads.

Note: If we create a File DSN instead of a System or User DSN, the data will be stored in a file rather than in a registry entry. However, File DSNs still store the data in plaintext, similar to what we saw in the registry. So the concerns for security apply equally to File DSNs and System/User DSNs.

--Ben Clothier

Ben Clothier has been an Access MVP since 2009. He is an independent contractor working with J Street Technology and Advisicon and was Technical Editor for the Access 2010 Programmer's Reference.


View the original article here

Power tip: supercharge conditional formatting with a little code

Over the past the product team has few versions of access constantly more conditional formatting functionality for forms and reports added. In access 2010, you can add conditional formatting for each object, for example, up to 50 rules without having to write any Visual Basic for applications (VBA) code. However, if you work in an earlier version, or if you prefer only VBA for formatting tasks on your forms and reports use, Juan Soto of AccessExperts.net has blogged some VBA-based conditional formatting techniques , which he has recently introduced. It provides a code example, you can copy and try for yourself, so take a look!

Thanks Juan!

--Chris downs

You have a power tip you would like to share? Send us at accpower@microsoft.com.


View the original article here