InfoPath Basics: Main vs. secondary data sources

Applies to: InfoPath 2007

Learn how you can in InfoPath add a secondary data source, what the difference is between a Main and secondary InfoPath data source, and how to programmatically retrieve a reference to the Main data source or to an InfoPath secondary data source.

ADVERTISEMENTS

Introduction to data sources

There are two types of InfoPath data sources: Main and secondary data source. An InfoPath form template always contains one Main data source and can contain zero or more secondary data sources.

The difference between the Main and secondary data sources

The Main InfoPath data source of a form contains the data that you want to permanently store when you save the form. An InfoPath secondary data source on the other hand, is a temporary storage location for data that is external to the form. Such data typically lives outside the form in databases, XML files, SharePoint lists or libraries, or can be retrieved from web services.

When you save a form, the data in the secondary data sources of the form is never saved in the form. This is an important fact to remember when you design InfoPath form templates. Therefore, if you want data to be present in a form after you save, close, and re-open the form, you have to store this data in the Main data source of the InfoPath form.

How to create data sources

A Main data source is automatically added to an InfoPath form when you create a form template. You can create or add a secondary data source to InfoPath by adding a Receive or Submit data connection to a form template. You can add an InfoPath data connection to a form template by going to the Tools menu and selecting Data Connections.

How to view data sources

You can use the Data Source task pane to view InfoPath Main and secondary data sources in a form template. If the Data Source task pane is not visible, click Data Source on the View menu to bring it up. The Data Source drop-down list box will contain the text Main for the Main InfoPath data source and an InfoPath data connection name followed by the text (Secondary) for a secondary data source (see Figure 1).

Data Source take pane in InfoPath

Figure 1. Data source task pane in InfoPath.

Programmatically get a reference to the Main InfoPath data source

If you are writing code and want to programmatically get a reference to the Main InfoPath data source of your form template, you can use the following C# code:

XPathNavigator mainDS = MainDataSource.CreateNavigator();

Or the following Visual Basic code:

Dim mainDS As XPathNavigator = MainDataSource.CreateNavigator()

You can then use the XPathNavigator object to get or set values of fields (= nodes in the XML) on the form.

Programmatically get a reference to an InfoPath secondary data source

If you are writing code and want to programmatically get a reference to an InfoPath secondary data source that receives data in your form template, you can use the following C# code:

XPathNavigator secDS = DataSources["your_receive_data_connection_name"].CreateNavigator();

Or the following Visual Basic code:

Dim secDS As XPathNavigator = DataSources("your_receive_data_connection_name").CreateNavigator()

You can then use the XPathNavigator object to get or set values of fields (= nodes in the XML) of the secondary data source.

Also See

The recipes in InfoPath 2010 Cookbook and InfoPath 2013 Cookbook teach the basics of working with InfoPath, while the recipes in InfoPath 2010 Cookbook 3 (for C#) and InfoPath 2010 Cookbook 4 (for VB) teach you how to write code that accesses fields and data in either the Main or secondary data source. And finally, to learn more about working with SharePoint list and web service data connections, see InfoPath 2010 Cookbook 2.

 


Related InfoPath Articles:

 

Copyright: This article may not be used on web sites (whether personal or otherwise), copied, disseminated, altered, printed, published, broadcasted, or reproduced in any way without an expressed written consent. The techniques demonstrated in this article may be used within any Microsoft InfoPath project. This article is provided without any warranties. Copyright for this article is non-transferrable and remains with the author.

InfoPath 2013 Cookbook: 121 Codeless Recipes for Beginners

InfoPath 2013 Cookbook 2: 121 Codeless Recipes for SharePoint 2013

InfoPath 2010 Cookbook: 101 Codeless Recipes for Beginners

InfoPath 2010 Cookbook 2: 101 Codeless Recipes for SharePoint 2010

InfoPath 2010 Cookbook 3: 101 Code Recipes for C# Developers

InfoPath 2010 Cookbook 4: 101 Code Recipes for VB Developers

InfoPath 2010 Cookbook 5: Integrating InfoPath with Excel and Excel Services