2016-06-28 9 views
0

Ich erstelle gerade mein erstes InfoPath-Formular mit C# -Code am Backend. Es verbindet sich auch mit einer SQL Server DB. Wenn das Formular geöffnet wird, möchte ich, dass es sich mit unserer SQL Server-Datenbank verbindet und automatisch den Namen und den Titel des Benutzers eingibt. Ich halte mich jedoch eher an eine scheinbar einfache Aufgabe.Wie man eine ADOQueryConnection mit C# in Infopath 2013 liest

Wie lese ich die Daten von einer ADO-Verbindung, nachdem ich die Abfrage ausgeführt habe? Unten ist mein Code. Das scheint so einfach zu sein, aber ich kann es nicht herausfinden.

AD_Mirror enthält die ADO-Verbindung zum DB und die entsprechende Tabelle. Die CustomQuery ist mein Versuch, dies durch den Benutzer, der das Formular öffnet, zu filtern.

Ich führe es dann in der Theorie greifen die Benutzerinformationen, die ich brauche. Dann bin ich unsicher, wie es weitergehen soll. Ich habe überall nach einer Antwort gesucht, daher würde jede Hilfe sehr geschätzt werden.

 //ADO Attempt 
     AdoQueryConnection connection = 
     (AdoQueryConnection)DataConnections["AD_Mirror"]; 

     string customQuery = " where SamAccountName = '" + userName + "'"; 
     string origCommand = connection.Command.ToString(); 
     //set the query to use the custom command 
     connection.Command = origCommand + customQuery; 
     //annnnnnddddd, now we run the query using our shiny new command   
     connection.Execute(); 
+0

haben Sie die [MSDN Beispiel Online AdoQueryConnection.Command Eigenschaft] check out (https://msdn.microsoft.com/en-us/library/microsoft.office.infopath.adoqueryconnection.command.aspx) – MethodMan

+0

Ich sah das ... aber was mache ich nach dem myAdoQueryConnection.Execute() ;? Ich möchte die Daten, die ich erhalte, erfassen und Felder in meinem Formular ausfüllen. – ISUTri

+0

Also muss ich im Grunde herausfinden, wie man das, was ich oben habe, benutzt und es mit etwas wie einem DataReader mischt. Ich konnte nichts zur Arbeit bringen und ein Leser ist vielleicht nicht die richtige Idee. – ISUTri

Antwort

0

Also musste ich die Verbindung von der SQL-Abfrage trennen. Ziehen Sie dann in einer Datentabelle in die Daten zu ziehen.

string queryString = origCommand + customQuery; //Pull in Query 
    string conn = connection.Connection; //Grab Connection 

        using (OleDbConnection connection1 = new OleDbConnection(conn)) 
      { 
       OleDbCommand command = new OleDbCommand(queryString, connection1); 
       command.CommandType = CommandType.Text; 

       try 
       { 
        connection1.Open(); 
        OleDbDataAdapter adapter = new OleDbDataAdapter(command); 
        adapter.Fill(oSet); 

          string firstName = (oSet.Tables[0].Rows[0].ItemArray[9]).ToString(); 
        firstName = firstName.Trim(); 

Meine Anfrage hat Vornamen in Spalte 9 (daher die oben ItemArray von 9). Du kannst es so einrichten, dass du es durchschleifst, wenn du es brauchst, aber ich tat es nicht.

Dank

Verwandte Themen