Microsoft InfoPath 2010
The official blog of the Microsoft InfoPath team

April, 2006

  • Microsoft InfoPath 2010

    WebCast Reminder: Developing Office InfoPath 2007 Forms

    Hello all,

    I want to thank those of you who attended last week's WebCast. We had a few technical issues that prevented us from completing the demos so we will likely present the WebCast again sometime in the future.  Monday, we'll be holding our third and final (for now) WebCast about InfoPath 2007. I hope you will be able to attend.

    Developing InfoPath Forms for Office InfoPath 2007
    Time: Monday, April 24, 2006 10:00 AM - 11:00 AM (PST)
    Presenter: Nima Mirzad, Program Manager - InfoPath
    This WebCast presents an overview of Microsoft Office InfoPath 2007 programmability features including the managed object model, template parts, and provisions for third-party hosting. We also discuss techniques for using Microsoft Visual Studio 2005 Tools for Applications (VSTA) and Microsoft Visual Studio 2005 Tools for the Microsoft Office System (VSTO) to develop Office InfoPath 2007 forms.

    Scott Roberts
    Software Design Engineering Lead
    Microsoft Office InfoPath
  • Microsoft InfoPath 2010

    Wizards (and we're not talking Harry Potter)

    I just got back from some customer visits in Washington DC (governments tend to have a lot of forms…) and a common design pattern came up a few times: creating wizard-like forms. Since InfoPath provides all the built in tools to do this, without any fancy XPaths or code, I thought it would be fun to blog about here.
    Basic wizard
    Let's say you have a form that would be easier to fill out if folks could focus on one section at a time in a specific order. You can provide that experience by putting each section in its own view, and adding Back/Next buttons to navigate between them.
    1. Open you form in design mode
    2. Open the Views task pane
    3. Click Add New View for each section in your form
    4. Copy and paste each section to its own view
    5. Open the Controls task pane
    6. Insert two Buttons
    7. Double click each button to open Button Properties
    8. Change the label for each button to "<< Back" or "Next >>"
    9. Click Rules to open the Rules dialog
    10. Click Add to add a rules
    11. Click Add Action to add an action
    12. For the Action, select Switch Views
    13. Select the view to switch to
    14. Copy and paste your button pairs to each view and update the rules to switch to different views.
    You can also provide this experience by adding Conditional Formatting to each section and hiding all sections that don't currently apply, but that can be cumbersome to design since the view can get so big, and I find it harder to manage the flow.
    Conditional Wizard
    InfoPath forms are dynamic, and wizard forms are no different. A common pattern is changing what data you collect based on what they selected earlier on. For example, it's tax time, so if I'm filling out a 1040 and select the option button to file as a single, I can skip the step that would ask me about dependents. You can get this in your form by adding a condition to the rule on your "Next" button, and adding a different rule for each view they could jump to.
    Some wizard pointers
    • Keep it simple. Try to minimize the number of controls on each page of the wizard. In fact, if you can ask for only one piece of information on a given page, your users will thank you. That said, if there is related data, keeping all of it on one page can be easier than having to skip back and forth.
    • Make it pretty. One of the benefits of a wizard is that you're not trying to cram all that data onto one page, so you have room to throw a graphic on the left in addition to a nice header. You can also wrap everything in a table to make sure the Next/Back buttons don't jump around. Eye candy for all!
    • Share where you are. If the wizard isn't conditional, leave the views on the View menu so people can quickly jump around if they want, and see how far they have to go. If the wizard is conditional so you don't want people jumping to the wrong pages, you can hide the views from the View menu using View Properties, but replace it with a chart at the top of each page to let them know how far they have to go. A simple text saying "25% complete" can go a long way.
    • Know when you're done. Presumably the last page of the wizard will submit the data. It's a nice touch to provide a summary of the data they've entered so far, and change the label on the "Next" button to "Finish" or even just "Submit".
    If you have any more tips on creating wizard forms, our team and the rest of the InfoPath community would love to hear them, so feel free to comment!
  • Microsoft InfoPath 2010

    WebCast Reminder: Developing Rich Client and Browser Forms

    I want to thank those of you who attended last week’s WebCast. It was a big success.  Tomorrow, we’ll be holding our second WebCast about InfoPath 2007. I hope you will be able to attend.
    Developing, Deploying, and Hosting Rich Client and Browser Forms for Microsoft Office InfoPath 2007
    Time: Tuesday, April 18, 2006 12:00 PM – 1:00 PM (PST)
    Presenter: Pradeep Rasam, Program Manager - InfoPath
    Were you aware that you can design Microsoft Office InfoPath 2007 forms for both the rich client and the browser in a single step? This webcast presents the design-once process for InfoPath 2007, and covers debugging, deployment, and improving the performance and scalability of forms. Find out how to host the InfoPath rich client in other applications, and how to tightly integrate InfoPath 2007 forms into Web pages. We also discuss best practices for using the hosted form control to build powerful but easy-to-use solutions.

    - Scott
  • Microsoft InfoPath 2010

    Check if form is new using roles, not code

    Ever want to add conditional formatting or special rules that only fire if your form was just created?
    For example, you want to show one view by default when someone creates a new expense report, but you want show a summary view for everyone else who opens the form.
    Here's how.
    Click on Tools, then User Roles, and use the dialog to add two roles:
    • New Form: Check the checkbox for "initiator" (don’t set any other properties) This role will apply for new forms only.
    • Old Form: Set this one as the "default" in this list
    You'll get something like this in the dialog:
    Now you've got roles to detect whether the user just created the form or is opening it later on, so you can use that information in Rules, Data Validation, Conditional Formatting, even Filters. Just go to the place you want to be conditional, then pick User's Current Role in the first dropdown of the condition, and pick the role you want to test for in the third dropdown (New Form or Old Form).
    You'll get something like this:
    Now when someone opens the form, you'll know if they just created it or are coming back later, and can make your form dynamic accordingly. It doesn't make sense for most forms, but like all the tricks in the blog, I hope this trick helps you make quick progress when the need arises.
    And there you have it. A little tip for the week.
    - Ned
  • Microsoft InfoPath 2010

    Webcast Reminder: New Features in Office InfoPath 2007

    Hi all,

    This is just a reminder that on Tuesday, Gray Knowlton will present the first in our three-part WebCast series introducing InfoPath 2007.  I hope you will join us.

    New Features in Office InfoPath 2007
    Time: Tuesday, April 11, 2006 12:00 PM - 1:00 PM (PST)
    Presenter: Gray Knowlton, SR. Product Manager - Office

    This webcast presents an overview of the new features in Microsoft Office InfoPath 2007 and InfoPath Forms Services. Join us to learn how you can use InfoPath 2007 to automate and extend business processes by utilizing XML and integration standards to connect electronic forms to virtually any application or system.

    Scott Roberts
    Software Design Engineering Lead
  • Microsoft InfoPath 2010

    Email Submit "To" line (loops in formulas)

    Everyone likes InfoPath's email data connection because it lets you collect forms using email only, no other infrastructure required (no need for Windows SharePoint Services, SQL Server, or even a file share). We've built even more Outlook integration in InfoPath 2007 Beta, but since most of you don't have that yet, let me share a tip that will work in both InfoPath 2003 and 2007.
    The basics: Single dynamic email address
    As your probably know, the To and CC line of the email data connection can come from a textbox in the form by using a formula. To do that, just use the Fx button next to the To line in the data connection wizard:
    The trick: Multiple email addresses from repeating controls
    Some forms have a list of names they want to send to, but the simple formula above won't work for that.
    For example, consider a repeating table that looks like this:
    With this data source (note that "person" is repeating):
    So you want to produce this semicolon-separated list of e-mails:
    A good instinct is to use the "concat" function, but unfortunately that only works on the first element in a repeating structure.
    So then comes the team insight: Our "eval" function returns a list of nodes which actually share an anonymous parent. That means you can use one eval functions to create a list of the email addresses, then wrap it in another eval function that gets the parent of that list.
    Voila, here's the formula to solve the problem:
    eval(eval(person, "concat(my:email, ';')"), "..")
    (Note that "person" can be inserted from the data source, but "my:email" needs to be typed by hand or you'll get an error.)
    For the curious: Here's how it's done
    Let's break down that XPath formula from the inside out:
    • "concat(my:email, ';')" - Adds a semicolon to each email address.
    • eval(person, "concat(my:email, ';')") - Loops through each person to create a list of email addresses
    • eval(eval(person, "concat(my:email, ';')"), "..") - Gets the anonymous parent of the email addresses, and converts them to a string.
    So the end result returns the contents of that anonymous parent, which is a series of semicolon-delimited email addresses. Phew!
    In summary
    We are using two tricks here:
    • The fields returned by eval() all have the same anonymous parent (feature of InfoPath's function)
    • The string value of a parent is the concatenation of all its children (W3C spec’ed)
    - David Airapetyan (Software Design Engineer) and Ned
  • Microsoft InfoPath 2010

    Fun for the Whole Office Family

    Most of this blog focuses on advanced tips and tricks for InfoPath, but I'd hate it if that left you thinking InfoPath was a developer-only tool. We're part of the Office family, and we'd like to think we act like it, so let me call out a brand new site our product managers just put together that covers InfoPath 2007's out-of-the-box easy-to-use features you'd expect from an Office product.
    The screenshot above is from a quick demo on the site that shows importing a paper based Word form into InfoPath, routing it through email and the browser (shown above), and exporting the results from Outlook into Excel for analysis. It's an example of how much can be done without using the bag of tricks this blog's all about. Hopefully it helps you see how your organization can use InfoPath to make all those pesky business processes run smoother without a bunch of IT legwork. Better yet, it might even help erase that cringe reaction to the term "business process."
    But of course you don't need to read a blog by the InfoPath creators to learn how to use our powerful built-in features, so we'll keep posting those advanced tricks, don't you worry.
    - Ned
Page 1 of 1 (7 items)