Hallo zusammen,
ich lese schon ein paar Tage mit konnte aber leider noch keine Antowort finden.
Ich soll für meine Chef eine neue Warenwirtschaft programmieren. Das ganze läuft dann auf einem SQL 2008 Server und die Entwicklungsumgebung ist Visual Studio 2010 Visual Basic.
Im Moment hänge ich an folgendem Problem.
Ich erstelle gerade die Mitarbeiterverwaltung. In dieser wird der Mitarbeiter neu angelegt, festgelegt ob er sich an der Warenwirtschaft anmelden darf, ob er Techniker oder Verkäufer ist. Wenn der neue Mitarbeiter nur Techniker und / oder Verkäufer ist steht er später in verschieden Auswahlfelder zur Verfügung. Wird er allerdings USER (kann sich also an der Warenwirtschaft anmelden), bekommt er weitere Rechte zugewiesen. Es wird festgelegt mit welchem Mandanten er arbeiten kann, und welche Rechte er dort hat.
Ich hoffe ich habe das verständlich erklärt.
Jetzt zu meinem Problem. Ich habe folgende Tabellen auf dem SQL-Server angelegt.
[IMG]Bild Hosted bei ImagesUp.de[/IMG]
Dazu habe ich folgenden Code geschrieben:
[highlight=vbnet]
sqlds = New DataSet
Dim myConnectstring As String
Dim strcsb As New SqlConnectionStringBuilder
With strcsb
' Servername an CSB.DataSource übergeben
.DataSource = strsqlserver
'Datenbankname
.InitialCatalog = "XXXXX"
'Mehrere Reader gleichzeitig aktivieren
'WICHTIG !!
.MultipleActiveResultSets = True
' IntegratedSecurity
.IntegratedSecurity = False
' Für PersistSecurityInfo wird immer der Wert False verwendet
.PersistSecurityInfo = False
'Username & Passwort
.UserID = XXXXXX
.Password = XXXXXX
End With
'Connection-Objekt aufbauen
myConnectstring = strcsb.ConnectionString
sqlconn = New SqlConnection(myConnectstring)
sqldtfirma = sqlds.Tables.Add("db_firma")
sqldafirma = New SqlDataAdapter("SELECT * FROM tbl_firma", sqlconn)
sqldafirma.FillSchema(sqlds, SchemaType.Source, "tbl_firma")
sqldafirma.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbfirma = New SqlCommandBuilder(sqldafirma)
sqldafirma.InsertCommand = sqlcbfirma.GetInsertCommand
sqldafirma.DeleteCommand = sqlcbfirma.GetDeleteCommand
sqldafirma.UpdateCommand = sqlcbfirma.GetUpdateCommand
sqldafirma.Fill(sqldtfirma)
sqldtpersonal = sqlds.Tables.Add("db_personal")
sqldapersonal = New SqlDataAdapter("SELECT * FROM tbl_personalinfo", sqlconn)
sqldapersonal.FillSchema(sqlds, SchemaType.Source, "tbl_personalinfo")
sqldapersonal.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbpersonal = New SqlCommandBuilder(sqldapersonal)
sqldapersonal.InsertCommand = sqlcbpersonal.GetInsertCommand
sqldapersonal.DeleteCommand = sqlcbpersonal.GetDeleteCommand
sqldapersonal.UpdateCommand = sqlcbpersonal.GetUpdateCommand
sqldapersonal.Fill(sqldtpersonal)
sqldtuser = sqlds.Tables.Add("db_user")
sqldauser = New SqlDataAdapter("SELECT * FROM tbl_user ", sqlconn)
sqldauser.FillSchema(sqlds, SchemaType.Source, "tbl_user")
sqldauser.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbuser = New SqlCommandBuilder(sqldauser)
sqldauser.InsertCommand = sqlcbuser.GetInsertCommand
sqldauser.DeleteCommand = sqlcbuser.GetDeleteCommand
sqldauser.UpdateCommand = sqlcbuser.GetUpdateCommand
sqldauser.Fill(sqldtuser)
sqldttechn = sqlds.Tables.Add("db_techniker")
sqldatechn = New SqlDataAdapter("SELECT * FROM tbl_techniker ", sqlconn)
sqldatechn.FillSchema(sqlds, SchemaType.Source, "tbl_techniker")
sqldatechn.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbtechn = New SqlCommandBuilder(sqldatechn)
sqldatechn.InsertCommand = sqlcbtechn.GetInsertCommand
sqldatechn.DeleteCommand = sqlcbtechn.GetDeleteCommand
sqldatechn.UpdateCommand = sqlcbtechn.GetUpdateCommand
sqldatechn.Fill(sqldttechn)
sqldtverk = sqlds.Tables.Add("db_verkauf")
sqldaverk = New SqlDataAdapter("SELECT * FROM tbl_verkaeufer ", sqlconn)
sqldaverk.FillSchema(sqlds, SchemaType.Source, "tbl_verkauf")
sqldaverk.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbverk = New SqlCommandBuilder(sqldaverk)
sqldaverk.InsertCommand = sqlcbverk.GetInsertCommand
sqldaverk.DeleteCommand = sqlcbverk.GetDeleteCommand
sqldaverk.UpdateCommand = sqlcbverk.GetUpdateCommand
sqldaverk.Fill(sqldtverk)
sqldtrechte = sqlds.Tables.Add("db_rechte")
sqldarechte = New SqlDataAdapter("SELECT * FROM tbl_rechte ", sqlconn)
sqldarechte.FillSchema(sqlds, SchemaType.Source, "tbl_rechte")
sqldarechte.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbrechte = New SqlCommandBuilder(sqldarechte)
sqldarechte.InsertCommand = sqlcbrechte.GetInsertCommand
sqldarechte.DeleteCommand = sqlcbrechte.GetDeleteCommand
sqldarechte.UpdateCommand = sqlcbrechte.GetUpdateCommand
sqldarechte.Fill(sqldtrechte)
sqlds.Relations.Add("rel_personal_ID", sqlds.Tables("db_personal").Columns("personal_ID") , sqlds.Tables("db_user").Columns("personal_ID"))
sqlds.Relations.Add("rel_techniker_ID", sqlds.Tables("db_personal").Columns("personal_ID") , sqlds.Tables("db_techniker").Columns("personal_ID" ))
sqlds.Relations.Add("rel_verkauf_ID", sqlds.Tables("db_personal").Columns("personal_ID") , sqlds.Tables("db_verkauf").Columns("personal_ID"))
sqlds.Relations.Add("rel_rechte_ID", sqlds.Tables("db_personal").Columns("personal_ID") , sqlds.Tables("db_rechte").Columns("personal_ID"))
'Dim mastersource As New BindingSource
mastersource.DataSource = sqlds
mastersource.DataMember = "db_personal"
'Dim detailsource As New BindingSource
detailsource.DataSource = mastersource
detailsource.DataMember = "rel_personal_ID"
'Dim detailsource As New BindingSource
sourcetechnik.DataSource = mastersource
sourcetechnik.DataMember = "rel_techniker_ID"
'Dim detailsource As New BindingSource
sourceverkauf.DataSource = mastersource
sourceverkauf.DataMember = "rel_verkauf_ID"
'Dim detailsource As New BindingSource
sourcerechte.DataSource = mastersource
sourcerechte.DataMember = "rel_rechte_ID"
cbo_Firma.DataSource = sqlds.Tables.Item("db_firma")
cbo_Firma.DisplayMember = "hfibu_nr"
cbo_Firma.ValueMember = "firma_ID"
cbo_Position.DataSource = sqlds.Tables.Item("db_intabt")
cbo_Position.DisplayMember = "beschreibung"
cbo_Position.ValueMember = "intabt_ID"
mastersource.AddNew()
sourcerechte.AddNew()
btn_frmbn_Speichern.Enabled = True
txb_frmbn_Benutzername.DataBindings.Add("TEXT", detailsource, "username")
txb_frmbn_Passwort.DataBindings.Add("TEXT", detailsource, "passwort")
txb_frmbn_Fax.DataBindings.Add("TEXT", mastersource, "fax")
txb_frmbn_Geburtstag.DataBindings.Add("TEXT", mastersource, "geburtstag")
txb_frmbn_Handy.DataBindings.Add("TEXT", mastersource, "handy")
txb_frmbn_Initialen.DataBindings.Add("TEXT", mastersource, "initialen")
txb_frmbn_Mail.DataBindings.Add("TEXT", mastersource, "email")
txb_frmbn_Nachname.DataBindings.Add("TEXT", mastersource, "name")
txb_frmbn_Personal_ID.DataBindings.Add("TEXT", mastersource, "personal_ID")
txb_frmbn_Telefon.DataBindings.Add("TEXT", mastersource, "telefon")
txb_frmbn_Vorname.DataBindings.Add("TEXT", mastersource, "vorname")
txb_frmbn_User_ID.DataBindings.Add("TEXT", detailsource, "user_ID")
' cbo_Firma.DataBindings.Add("SELECTEDVALUE", sourcefirma, "firma_ID")
'cbo_Position.DataBindings.Add("SELECTEDVALUE", sourceintabt, "abt_ID")
End Sub
[/highlight]
Es soll folgendes passieren.
In meinem Bindingnavigator klicke ich auf neu. Obiger Code wird ausgeführt.
Ich erstelle eine Dataset mit allen beteiligten Tabellen, erstelle die Relationen,
und verschiedene Bindingsource.
[IMG]Bild Hosted bei ImagesUp.de[/IMG]
Wenn die Checkbox Benutzer angeklickt ist, kann ich Benutzername und Passwort eingeben. Firma und Position sind noch nicht richtig gebunden.(noch keine Ahnung wie ich das machen soll).Die personal_ID wird automatisch vergeben. Ich fülle also alle Textboxen und klicke auf speichern
[highlight=vbnet]
Dim clonesqlds As DataSet
clonesqlds = New DataSet
Try
mastersource.EndEdit()
detailsource.EndEdit()
If sqlds.HasChanges() Then
clonesqlds = sqlds.GetChanges()
sqldapersonal.Update(clonesqlds, "db_personal")
sqldarechte.Update(clonesqlds, "db_rechte")
sqldauser.Update(clonesqlds, "db_user")
End if
[/highlight]
Der neue Mitarbeiter wird zwar in der tbl_personalinfo angelegt, aber er wird nicht in der tbl_user eingetragen. Woran kann das liegen.
Das waren ja erst zwei Tabelln, wie soll das werden wenn ich alle Updaten will.
Ich hoffe Ihr versteht mich, wenn nicht einfach fragen. Bin für jede Antwort dankbar.
Danke
Frank
ich lese schon ein paar Tage mit konnte aber leider noch keine Antowort finden.
Ich soll für meine Chef eine neue Warenwirtschaft programmieren. Das ganze läuft dann auf einem SQL 2008 Server und die Entwicklungsumgebung ist Visual Studio 2010 Visual Basic.
Im Moment hänge ich an folgendem Problem.
Ich erstelle gerade die Mitarbeiterverwaltung. In dieser wird der Mitarbeiter neu angelegt, festgelegt ob er sich an der Warenwirtschaft anmelden darf, ob er Techniker oder Verkäufer ist. Wenn der neue Mitarbeiter nur Techniker und / oder Verkäufer ist steht er später in verschieden Auswahlfelder zur Verfügung. Wird er allerdings USER (kann sich also an der Warenwirtschaft anmelden), bekommt er weitere Rechte zugewiesen. Es wird festgelegt mit welchem Mandanten er arbeiten kann, und welche Rechte er dort hat.
Ich hoffe ich habe das verständlich erklärt.
Jetzt zu meinem Problem. Ich habe folgende Tabellen auf dem SQL-Server angelegt.
[IMG]Bild Hosted bei ImagesUp.de[/IMG]
Dazu habe ich folgenden Code geschrieben:
[highlight=vbnet]
sqlds = New DataSet
Dim myConnectstring As String
Dim strcsb As New SqlConnectionStringBuilder
With strcsb
' Servername an CSB.DataSource übergeben
.DataSource = strsqlserver
'Datenbankname
.InitialCatalog = "XXXXX"
'Mehrere Reader gleichzeitig aktivieren
'WICHTIG !!
.MultipleActiveResultSets = True
' IntegratedSecurity
.IntegratedSecurity = False
' Für PersistSecurityInfo wird immer der Wert False verwendet
.PersistSecurityInfo = False
'Username & Passwort
.UserID = XXXXXX
.Password = XXXXXX
End With
'Connection-Objekt aufbauen
myConnectstring = strcsb.ConnectionString
sqlconn = New SqlConnection(myConnectstring)
sqldtfirma = sqlds.Tables.Add("db_firma")
sqldafirma = New SqlDataAdapter("SELECT * FROM tbl_firma", sqlconn)
sqldafirma.FillSchema(sqlds, SchemaType.Source, "tbl_firma")
sqldafirma.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbfirma = New SqlCommandBuilder(sqldafirma)
sqldafirma.InsertCommand = sqlcbfirma.GetInsertCommand
sqldafirma.DeleteCommand = sqlcbfirma.GetDeleteCommand
sqldafirma.UpdateCommand = sqlcbfirma.GetUpdateCommand
sqldafirma.Fill(sqldtfirma)
sqldtpersonal = sqlds.Tables.Add("db_personal")
sqldapersonal = New SqlDataAdapter("SELECT * FROM tbl_personalinfo", sqlconn)
sqldapersonal.FillSchema(sqlds, SchemaType.Source, "tbl_personalinfo")
sqldapersonal.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbpersonal = New SqlCommandBuilder(sqldapersonal)
sqldapersonal.InsertCommand = sqlcbpersonal.GetInsertCommand
sqldapersonal.DeleteCommand = sqlcbpersonal.GetDeleteCommand
sqldapersonal.UpdateCommand = sqlcbpersonal.GetUpdateCommand
sqldapersonal.Fill(sqldtpersonal)
sqldtuser = sqlds.Tables.Add("db_user")
sqldauser = New SqlDataAdapter("SELECT * FROM tbl_user ", sqlconn)
sqldauser.FillSchema(sqlds, SchemaType.Source, "tbl_user")
sqldauser.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbuser = New SqlCommandBuilder(sqldauser)
sqldauser.InsertCommand = sqlcbuser.GetInsertCommand
sqldauser.DeleteCommand = sqlcbuser.GetDeleteCommand
sqldauser.UpdateCommand = sqlcbuser.GetUpdateCommand
sqldauser.Fill(sqldtuser)
sqldttechn = sqlds.Tables.Add("db_techniker")
sqldatechn = New SqlDataAdapter("SELECT * FROM tbl_techniker ", sqlconn)
sqldatechn.FillSchema(sqlds, SchemaType.Source, "tbl_techniker")
sqldatechn.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbtechn = New SqlCommandBuilder(sqldatechn)
sqldatechn.InsertCommand = sqlcbtechn.GetInsertCommand
sqldatechn.DeleteCommand = sqlcbtechn.GetDeleteCommand
sqldatechn.UpdateCommand = sqlcbtechn.GetUpdateCommand
sqldatechn.Fill(sqldttechn)
sqldtverk = sqlds.Tables.Add("db_verkauf")
sqldaverk = New SqlDataAdapter("SELECT * FROM tbl_verkaeufer ", sqlconn)
sqldaverk.FillSchema(sqlds, SchemaType.Source, "tbl_verkauf")
sqldaverk.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbverk = New SqlCommandBuilder(sqldaverk)
sqldaverk.InsertCommand = sqlcbverk.GetInsertCommand
sqldaverk.DeleteCommand = sqlcbverk.GetDeleteCommand
sqldaverk.UpdateCommand = sqlcbverk.GetUpdateCommand
sqldaverk.Fill(sqldtverk)
sqldtrechte = sqlds.Tables.Add("db_rechte")
sqldarechte = New SqlDataAdapter("SELECT * FROM tbl_rechte ", sqlconn)
sqldarechte.FillSchema(sqlds, SchemaType.Source, "tbl_rechte")
sqldarechte.MissingSchemaAction = MissingSchemaAction.AddWithKey
sqlcbrechte = New SqlCommandBuilder(sqldarechte)
sqldarechte.InsertCommand = sqlcbrechte.GetInsertCommand
sqldarechte.DeleteCommand = sqlcbrechte.GetDeleteCommand
sqldarechte.UpdateCommand = sqlcbrechte.GetUpdateCommand
sqldarechte.Fill(sqldtrechte)
sqlds.Relations.Add("rel_personal_ID", sqlds.Tables("db_personal").Columns("personal_ID") , sqlds.Tables("db_user").Columns("personal_ID"))
sqlds.Relations.Add("rel_techniker_ID", sqlds.Tables("db_personal").Columns("personal_ID") , sqlds.Tables("db_techniker").Columns("personal_ID" ))
sqlds.Relations.Add("rel_verkauf_ID", sqlds.Tables("db_personal").Columns("personal_ID") , sqlds.Tables("db_verkauf").Columns("personal_ID"))
sqlds.Relations.Add("rel_rechte_ID", sqlds.Tables("db_personal").Columns("personal_ID") , sqlds.Tables("db_rechte").Columns("personal_ID"))
'Dim mastersource As New BindingSource
mastersource.DataSource = sqlds
mastersource.DataMember = "db_personal"
'Dim detailsource As New BindingSource
detailsource.DataSource = mastersource
detailsource.DataMember = "rel_personal_ID"
'Dim detailsource As New BindingSource
sourcetechnik.DataSource = mastersource
sourcetechnik.DataMember = "rel_techniker_ID"
'Dim detailsource As New BindingSource
sourceverkauf.DataSource = mastersource
sourceverkauf.DataMember = "rel_verkauf_ID"
'Dim detailsource As New BindingSource
sourcerechte.DataSource = mastersource
sourcerechte.DataMember = "rel_rechte_ID"
cbo_Firma.DataSource = sqlds.Tables.Item("db_firma")
cbo_Firma.DisplayMember = "hfibu_nr"
cbo_Firma.ValueMember = "firma_ID"
cbo_Position.DataSource = sqlds.Tables.Item("db_intabt")
cbo_Position.DisplayMember = "beschreibung"
cbo_Position.ValueMember = "intabt_ID"
mastersource.AddNew()
sourcerechte.AddNew()
btn_frmbn_Speichern.Enabled = True
txb_frmbn_Benutzername.DataBindings.Add("TEXT", detailsource, "username")
txb_frmbn_Passwort.DataBindings.Add("TEXT", detailsource, "passwort")
txb_frmbn_Fax.DataBindings.Add("TEXT", mastersource, "fax")
txb_frmbn_Geburtstag.DataBindings.Add("TEXT", mastersource, "geburtstag")
txb_frmbn_Handy.DataBindings.Add("TEXT", mastersource, "handy")
txb_frmbn_Initialen.DataBindings.Add("TEXT", mastersource, "initialen")
txb_frmbn_Mail.DataBindings.Add("TEXT", mastersource, "email")
txb_frmbn_Nachname.DataBindings.Add("TEXT", mastersource, "name")
txb_frmbn_Personal_ID.DataBindings.Add("TEXT", mastersource, "personal_ID")
txb_frmbn_Telefon.DataBindings.Add("TEXT", mastersource, "telefon")
txb_frmbn_Vorname.DataBindings.Add("TEXT", mastersource, "vorname")
txb_frmbn_User_ID.DataBindings.Add("TEXT", detailsource, "user_ID")
' cbo_Firma.DataBindings.Add("SELECTEDVALUE", sourcefirma, "firma_ID")
'cbo_Position.DataBindings.Add("SELECTEDVALUE", sourceintabt, "abt_ID")
End Sub
[/highlight]
Es soll folgendes passieren.
In meinem Bindingnavigator klicke ich auf neu. Obiger Code wird ausgeführt.
Ich erstelle eine Dataset mit allen beteiligten Tabellen, erstelle die Relationen,
und verschiedene Bindingsource.
[IMG]Bild Hosted bei ImagesUp.de[/IMG]
Wenn die Checkbox Benutzer angeklickt ist, kann ich Benutzername und Passwort eingeben. Firma und Position sind noch nicht richtig gebunden.(noch keine Ahnung wie ich das machen soll).Die personal_ID wird automatisch vergeben. Ich fülle also alle Textboxen und klicke auf speichern
[highlight=vbnet]
Dim clonesqlds As DataSet
clonesqlds = New DataSet
Try
mastersource.EndEdit()
detailsource.EndEdit()
If sqlds.HasChanges() Then
clonesqlds = sqlds.GetChanges()
sqldapersonal.Update(clonesqlds, "db_personal")
sqldarechte.Update(clonesqlds, "db_rechte")
sqldauser.Update(clonesqlds, "db_user")
End if
[/highlight]
Der neue Mitarbeiter wird zwar in der tbl_personalinfo angelegt, aber er wird nicht in der tbl_user eingetragen. Woran kann das liegen.
Das waren ja erst zwei Tabelln, wie soll das werden wenn ich alle Updaten will.
Ich hoffe Ihr versteht mich, wenn nicht einfach fragen. Bin für jede Antwort dankbar.
Danke
Frank
Comment