Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Sharepoint - Probleme mit asp querystringparameter - updatecommand

Frage Entwicklung VB for Applications

Mitglied: Kitana

Kitana (Level 1) - Jetzt verbinden

04.02.2009, aktualisiert 10:12 Uhr, 5151 Aufrufe, 1 Kommentar

hallo,
ich arbeite seit einiger Zeit mit dem Sharepoint Designer 2007.
Der betreffender Sharepoint Server liegt auf einem w2k3.

Kurz zum Umfeld:
ich entwickel mit sharepoint eine Art Datenbank für Verträge, welche die Anbindung an eine SQL Datenquelle benötigt zum Generieren neuer Vertragsnummern und Änderungsnummern. Das heißt jedes Mal wenn man ein NewForm aufruft (Verträge bzw Änderungen) wird die Tabelle in der Datenbank geupdatet. Da bei jedem Vertrag die Änderungsnummer bei 1 beginnen soll, ergibt sich daraus eine Tabelle in der SQL Datenbank, die die Felder Vertragsnummer und Änderungsnummer beinhaltet. Bei Anlegen eines neuen Vertrages wird in der Datenbank ein neuer Datensatz mit "letzte Vertragsnummer + 1" und Änderungsnummer 0 angelegt. Bei einer neuen Änderung soll dann die Änderungsnummer um 1 hochgezählt werden. Soweit zur Teorie der Datenbank - geht nur nicht :D

Praktisch funktioniert das Hochzählen der Änderungsnummer nicht so ganz wie gewünscht. Das heißt er führt den Updatecommand im SQL Query einmal bei Aufruf der Seite durch, was er auch soll und dann auch noch ein zweites Mal wenn man auf den Speichern Button klickt.
ich habe auf der Seite zwei DataFormWebparts, welche über eine Webpartverbindung verbunden sind. Der obere Webpart hat eine SPDatasource. Der untere eine SQLDatesource. Der untere Webpart ist im endeffekt dazu da die Änderungsnummer aus der SQL datenbank an den oberen Webpart zu übergeben, damit diese über das dortige Formular gespeichert werden kann.

Diesen schematischen Aufbau der beiden Webparts habe ich auch auf den Seiten für einen Neuen Vertrag und für einen neuen Geschäftspartner. Dort funktioniert das Hochzählen der jeweiligen (Vertrags- bzw. Partner-)Nummer ohne probleme. wenn ich ein neues Formular aufrufe, Daten eingebe, speicher und dann wieder ein neues Formular aufrufe, habe ich die nächst höhere Nummer.
Der Unterschied im Formular für eine neue Änderung zu den beiden Formularen besteht nun effektiv darin wie das SQL Query aufgebaut ist und dort liegt auch der "Fehler".

Das SQL Query für eine neue Vertragsnummer sieht wie folgt aus:

*<DataSources>
<asp:SqlDataSource id="..." runat="server" ... ProviderName="System.Data.SqlClient" ConnectionString="..." SelectCommand="DECLARE @Vertrag AS SMALLINT; SELECT @Vertrag=Max(Vertragsnummer)+1 FROM [Vertrag]; INSERT INTO [Vertrag] VALUES (@Vertrag,0); SELECT Max(Vertragsnummer) AS Vertragsnummer FROM [vertrag]"/>
</DataSources>*

Das SQL Query für einen neuen Partner sieht wie folgt aus:

<DataSources>
<asp:SqlDataSource id="..." runat="server" ... ProviderName="System.Data.SqlClient" ConnectionString="..." SelectCommand="UPDATE [Geschaeftspartner] SET Partnernummer = Partnernummer + 1; SELECT * FROM [Geschaeftspartner] "/>
</DataSources>

So und das Ganze für die Änderung ist ein wenig umfangreicher:

<DataSources>
<asp:SqlDataSource id="..." runat="server"... ProviderName="System.Data.SqlClient" ConnectionString="..." SelectCommand=" UPDATE [Vertrag] SET Aenderungsnummer = Aenderungsnummer + 1 WHERE Vertragsnummer = @Venummer; SELECT * FROM [Vertrag] WHERE Vertragsnummer = @Venummer"><SelectParameters><asp:querystringparameter QueryStringField="Vnummer" DefaultValue="1000" Name="Venummer" /></SelectParameters>
</asp:SqlDataSource>
</DataSources>

Das einzige, was zu den beiden anderen anders ist, ist dass ich hier unbedingt SelectParameters benötige. Der querystringparameter holt sich die Vertragsnummer aus der Url und übergibt diese an den SelectCommand.
Das Witzige an der Sache ist nun, wenn man das so ausführt, wird wie am Anfang beschrieben der SelectCommand zweimal ausgeführt und somit auch das UPDATE.
Sobald ich der Vertragsnummer einen festen Wert zuweise und den SelectParameter rausnehme, funktioniert das auch tadelos.
Übrigens muss im SelectCommand der parameter @Venummer noch nicht einmal auftauchen. Es reicht schon aus, dass die zeile:
<SelectParameters><asp:querystringparameter QueryStringField="Vnummer" DefaultValue="1000" Name="Venummer" /></SelectParameters>
im Code present ist, ohne irgendwo Anwendung zu finden, dass er zweimal ein Update macht ...

So und nun die Frage:
Was mach ich falsch, ist das ein blöder Bug, kennt das jemand? :D
Mitglied: Kitana
06.02.2009 um 09:09 Uhr
Lösung gefunden aber aufgrund von Unprofessionalität (auf deutsch fusch) nicht öffentlich tragbar *g*
Eins sei gesagt: Ich hab das mit dem doppelt Ausführen und somit um +2 hochzählen der Nummer nicht gelöst, sondern umgangen.

Fakt sei, dass der WSS irgendwie meint das SQL query zweimal ausführen zu müssen nur aufgrund der Tatsache, dass ein oder mehr Parameter in der DataSource definiert ist/sind.

Vielleicht stößt jemand in Zukunft auf das gleiche Problem und weiß eine Lösung ....
Bitte warten ..
Neuester Wissensbeitrag
Router & Routing

192.168er Adresse im öffentlichen Netz

(2)

Erfahrungsbericht von visco-c zum Thema Router & Routing ...

Ähnliche Inhalte
SAN, NAS, DAS
Fujitsu Q800 Probleme bei Domäneneinbindung

Frage von galnar zum Thema SAN, NAS, DAS ...

Microsoft Office
gelöst Nach Office 2010 SP2 Update - Kein Sharepoint export zu Access möglich (1)

Frage von paddl82 zum Thema Microsoft Office ...

Mac OS X
Adobe Acrobat Probleme (6)

Frage von uridium69 zum Thema Mac OS X ...

Exchange Server
Exchange 2010 SMART Host SMTP Relay Probleme (6)

Frage von dawdad zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (29)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (22)

Frage von Driphex zum Thema Exchange Server ...

Hyper-V
HYPER V und USB (16)

Frage von Hendrik2586 zum Thema Hyper-V ...

SAN, NAS, DAS
Backupserver für KMU (14)

Frage von Leo-le zum Thema SAN, NAS, DAS ...