zorsin
Goto Top

Infopath - Daten in SQL Datenbank schreiben

Moin,

ich haben ein Formular mit Infopath 2013 erstellt. In das Formular trägt man eine Nummer ein und es werden Daten aus einer MSSQL-Datenbank ausgegeben.
Das funktioniert auch soweit.

Nun möchte ich einen Teil der Daten wieder in eine andere Datenbank schreiben.
Und das funktioniert nicht!

Ich habe schon folgendes probiert:
Über benutzerdefinierten Code eine Verbindung zum SQL Server herzustellen - ist nicht mit nur C# Code möglich, weil die SQL Klassen fehlen bzw. ich benötige eine DataConnection zum Senden, wenn ich aber eine neue Datenverbindung einrichten möchte und dann Daten senden auswähle, kann man sich nicht mit einem SQL Server verbinden.

Über Infopath Bordmittel - auch hier fehlt mir die Datenverbindung.

Ich freue mich über Antworten.

Freundliche Grüße
Zorsin

Content-Key: 215080

Url: https://administrator.de/contentid/215080

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: colinardo
colinardo 25.08.2013 um 17:07:05 Uhr
Goto Top
Hallo Zorsin,
mit Bordmitteln wirst du so keine Lösung finden, da bei einer bereits existierenden MSSQL-Verbindung zum Abfragen von Daten keine weitere Verbindung zu einem MSSQL-Server zum senden aufgebaut werden kann. Wenn du dies erreichen willst bleibt entweder die Môglichkeit die Prozedur manuell in Visual Studio 2012 umzusetzen oder einen eher für diesen Zweck geeigneten Webservice einzurichten der diese Methoden für dein Formular bereitstellt.

Wie man eine Verbindung zu einem MSSQL Server via Code aufbaut, steht zu Hauf im Netz.

Grüße Uwe
Mitglied: Zorsin
Zorsin 26.08.2013 um 09:36:16 Uhr
Goto Top
Hallo Uwe,

danke für deine Antwort.
Ich habe schon versucht eine Verbindung mit VS2012 aufzubauen und das funktioniert auch, wenn ich aber den SQL Befehl in "INSERT INTO..." ändere passiert nichts.

Ich vermute, dass es Probleme gibt mit der AdoQueryConnection-Klasse, da diese nur zum empfangen von Daten ausgelegt ist.
Die AdoSubmitConnection-Klasse kann ich nicht nutzen, weil ich eine DataConnection zum Senden benötige, bei der ich nicht weiß wie ich diese einrichte.

Code für das Abfragen:
AdoQueryConnection Tabelle1Connection = (AdoQueryConnection)(this.DataConnections["Tabelle1"]);
string strSQLQuery = "SELECT * FROM Datenbank.dbo.Tabelle1 JOIN Tabelle2 ON Tabelle1.BelID = Tabelle2.Belegnummer";
Tabelle1Connection.Command = strSQLQuery;
Tabelle1Connection.Execute();
Dieser Code funktioniert einwandfrei.

Code fürs Reinschreiben:
AdoQueryConnection Tabelle3Connection = (AdoQueryConnection)(this.DataConnections["Tabelle3"]);
string strSQLQuery = "INSERT INTO Datenbank.dbo.Tabelle3 (Jahr,Nummer,Belegnummer) Values ('2013','2','101010')";
Tabelle3Connection.Command = strSQLQuery;
Tabelle3Connection.Execute();
Dieser Code funktioniert nicht.

Wenn ich AdoSubmitConnection anstatt von AdoQueryConnection nutze, bekomme ich, logischerweise, diese Fehlermeldung:
System.InvalidCastException
Das Objekt des Typs "Microsoft.Office.InfoPath.Internal.AdoQueryConnectionHost" kann nicht in Typ "Microsoft.Office.InfoPath.AdoSubmitConnection" umgewandelt werden.

Entdeckt jemand einen Fehler oder hat einen andere Lösungsvorschlag?

Grüße Zorsin
Mitglied: colinardo
colinardo 26.08.2013 um 10:21:04 Uhr
Goto Top
Hallo Zorsin,
ich dachte mit manueller Übertragung der Daten nicht, dass du die SQL-Verbindung in Infopath einbindest, sondern ohne das AdoQueryConnectionHost Objekt - also die Felder im Code abfragst, und diese dann an die SQL-Datenbank überträgst.

Grüße Uwe