Hallo Manfred X, hallo effeff,
vielen Dank für eure Hinweise.
@Manfred X
Die 2. Form ist die Einzeldarstellung der Notiz
In der 1. Form habe ich nur das DataGridView mit allen Notizen.
Diese Form wird ausschließlich für die Auswahl angezeigt
Unter dem 2. Anwender kann man jemanden verstehen, der in welcher Form auch immer Veränderungen an der Datenbank vornimmt. Z.B. über das Microsoft SQLServer Management Studio oder über ein Fremdprogramm
Die Records haben keinen Zeitstempel und sind jederzeit von jedermann aufrufbar.
Die Veränderungen an der DB-Tabelle (Nicht Insert) werden mit dem SQLAdapter durchgeführt
Eine Frage:
Was gibt mir SQLDependency zurück? Wie kann ich die Informationen einsetzen bzw. nutzen?
@effeff
Der neue Record wird direkt über eine StoredProcedure erzeugt
con.ConnectionString = strConnectionString
Dim cmdNew As New SqlCommand
cmdNew.Connection = con
cmdNew.CommandType = CommandType.StoredProcedure
cmdNew.CommandText = "usp_IdentityNewNotizen"
With cmdNew
With .Parameters
.Add("@AdressenIdent", SqlDbType.Int).Value = bsNotizenSng.Current( _
"AdressenIdent")
.Add("@ArtikelIdent", SqlDbType.Int).Value = bsNotizenSng.Current( _
"ArtikelIdent")
.Add("@LieferantenIdent", SqlDbType.Int).Value = bsNotizenSng.Current( _
"LieferantenIdent")
.Add("@Kurznotiz", SqlDbType.VarChar, 100).Value = _
bsNotizenSng.Current("Kurznotiz")
.Add("@Notiz", SqlDbType.Text).Value = bsNotizenSng.Current("Notiz")
.Add("@identity", SqlDbType.Int).Direction = ParameterDirection.Output
End With
End With
If con.State = ConnectionState.Closed Then con.Open()
cmdNew.ExecuteNonQuery()
bsNotizenSng.Current("NotizenIdent") = cmdNew.Parameters( _
"@identity").Value
intNotizenIdent = cmdNew.Parameters("@identity").Value
... Die StoredProcedure sieht so aus:
ALTER PROCEDURE [dbo].[usp_IdentityNewNotizen]
@AdressenIdent int,
@ArtikelIdent int,
@LieferantenIdent int,
@Kurznotiz varchar(100),
@Notiz varchar(MAX),
@identity int OUTPUT -- Rückgabewert
AS
BEGIN
SET NOCOUNT ON
-- Anlegen eines neuen Records und Rückgabe,
-- des SCOPE_IDENTITY()
-- ----------------------------------------------------------------------------
--BEGIN TRY
INSERT INTO tblNotizen(
AdressenIdent,
ArtikelIdent,
LieferantenIdent,
Kurznotiz,
Notiz)
VALUES (
@AdressenIdent,
@ArtikelIdent,
@LieferantenIdent,
@Kurznotiz,
@Notiz)
SET @identity = SCOPE_IDENTITY() Das Schreiben in die Tabelle des DataSets geschieht mit folgendem Code
Dim dv As DataView = New DataView(dsDatenPool.Tables("Notizen"))
Dim NewRow As DataRowView = dv.AddNew()
NewRow.BeginEdit()
NewRow("NotizenIdent") = bsNotizenSng.Current("NotizenIdent")
NewRow("ArtikelIdent") = 0
NewRow("ArtikelNummer") = ""
NewRow("AdressenIdent") = 0
NewRow("AdressenNummer") = ""
NewRow("LieferantenIdent") = 0
NewRow("LieferantenNummer") = ""
NewRow("Gruppe") = "Global"
NewRow("Kurznotiz") = bsNotizenSng.Current("Kurznotiz")
NewRow("DatenAnlageAm") = System.DateTime.Now.ToString("yyyy.MM.dd")
NewRow.EndEdit() Ansonsten werden die Daten über SQLAdapter angepasst.
Stehe jederzeit für Frage zur Verfügung
spatzimatzi |