Hi Jerry,
what I'm usually doing with my webservices is to return DataSets
sometimes rather than some sort of wrapper classes. This is a bit hard
wired, I know, because if the structure of the underlaying tables ís
changing, everything on the webservice consumer side has to be changed
too.
But it's fast to develop and easy to handle.
I'm using C#. Here is a sample webservice function, which wasn't
consumable by IP before applying Office SP2, but which is now perfectly
consumable by IP.
[WebMethod]
public DataSet db_select_something(Int64 id)
{
SqlConnection connection = new
SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);
SqlCommand command = new SqlCommand("db_select_something",
connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@id", id));
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
This fits perfectly into the IP world, regardless of how many tables
the returning dataset contains. The function is working against a
Stored Procedure on a MS SQL server, but this doesn't matter. Returning
an empty DataSet should work too.
In IP I'm creating a new form from a datasource, selecting
"webservice", selecting "receive data" and providing the URL of the
webservices WSDL e.g.
http://localhost/webservices/mywebservice.asmx?WSDL and providing the
name of the db_select_something function.
The IP wizard asks for a sample value for the ID parameter. You should
enter a value here, which is available in the underlaying data table,
because IP asks the webservice in order to retrieve the structure of
the returned dataset. That's it. After that you are free to design your
form.
Regards