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, 5148 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
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Office 2016 Probleme mit Outlook (5)

Frage von killtec zum Thema Microsoft Office ...

Microsoft Office
gelöst Sharepoint Cached User Infos ? (4)

Frage von joehuaba zum Thema Microsoft Office ...

Batch & Shell
gelöst Crontab mit Shell Probleme (9)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Windows 7
gelöst Sind euch verstärkte Probleme bei Windows 7 Updates aufgefallen? (4)

Frage von RadioHam zum Thema Windows 7 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...