Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 5179 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 ..
Ähnliche Inhalte
Webentwicklung
ASP MVC auf IIS 8.5 (3)

Frage von hpbruns zum Thema Webentwicklung ...

Windows Server
SharePoint Teamwebseite - kostenlose Alternative? (5)

Frage von Mosurama zum Thema Windows Server ...

Windows Server
Sharepoint 2013 Offline Installation (speziell:Prerequisites) (2)

Frage von ollip2016 zum Thema Windows Server ...

Microsoft
Sharepoint für Entwickler lizenzieren

Frage von DerWoWusste zum Thema Microsoft ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(6)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

Monitoring
Netzwerk-Monitoring Software (16)

Frage von Ghost108 zum Thema Monitoring ...

Windows 10
Windows 10 Ordnerfreigabe (15)

Frage von Xaero1982 zum Thema Windows 10 ...