Sorry for the back and forth, and thanks for hanging in there. I don't think your form is necessary at this point since we won't have access to your data source (Sharepoint list). I usually use rules, and not code, but the result should be the same.
Anyway, I think I've seen the problem.
It is interesting that your <query> used in the data connection lists all the columns you indicated in QueryBuilder, but the <query> used in code does not. If QueryBuilder is returning the queries this way, then it's worthy of an investigation.
What I mean is this: when I generate a query, I get the following three <query> strings in QueryBuilder:
<query maxrows='2'><columns><column
name='Client_x0020_Name'/><column name='Address'/><column
name='Company'/></columns></query>
concat("<query><columns><column
name='Client_x0020_Name'/><column name='Address'/><column
name='Company'/></columns><filter><eq><column
name='ID'/><value>", xdXDocument:get-DOM()/my:myFields/my:description
,"</value></eq></filter></query>")
String.Format("<query><columns><column
name='Client_x0020_Name'/><column name='Address'/><column
name='Company'/></columns><filter><eq><column
name='ID'/><value>{0}</value></eq></filter></query>",
description)
As you can see (underlined), all three queries contain the list of columns to return, where as your code snippet a few posts above does not list the columns.
So, to summarize the workaround I propose, your <query> must always contain the columns you want returned. You seem to have done this for the one <query> that defines the data connection, but not for the query you use in code.