Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Datenbindung von 2 Tabellen in einer 3 Tabelle
Herlth
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

Datenbindung von 2 Tabellen in einer 3 Tabelle

beantworten | zitieren | melden

verwendetes Datenbanksystem: <bitte immer angeben>
Ich benutze SQLServerexpress2008 mit VisualStudio2008.

Ich bin noch neu in der Programmierwelt.

Ich habe das Problem, dass ich eine Tabelle Namens Firma habe, wo ich Kunden anlege. Die 2 Tabelle ist die Niederlassung.

Jetzt kann es vorkommen, dass eine Firma mehrere Niederlassungen hat.

Deshalb habe ich eine dritte Tabelle mit Firma_Niederlassung_Zuordnung erstellt.
Die Tabelle Firma hat einen Primärschluesel der Auf die 3 Tabelle Spalte 2 zeigt.
Die Tabelle Niederlassung hat einen Primärschluessel, der auf die 3 Spalte der Tabelle zeigt. Die 1. Spalte ist natürlich immer eine fortlaufende ID.

Jetzt mein Problem. Leider wird in der Tabelle ..Zuordnung nichts eingetragen, wenn ich eine neue Niederlassung erstelle.

Vielleicht weiß jemand was ich falsch mache.

Vielen Dank im vorraus.
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2132

beantworten | zitieren | melden

Von selber wird da natürlich nichts eingetragen :-)
Und was du alles bisher machst, erzählst du uns ja nicht. Lies mal deinen Beitrag und versetz dich in jemand der überhaupt nichts über dein Projekt weiß.
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

Hi,


wenn eine Firma mehrere Niederlassungen hat, ist das doch eine 1:n-Beziehung.

Dann reichen doch auch 2 Tabellen

Tabelle Firma:
==========
- firmaID
- firmenname
- ...

Tabelle Niederlassung
==============
- niederlassungId
- firmaId
- niederlassungname
- ...
private Nachricht | Beiträge des Benutzers
Herlth
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

Hallo Chilic,

ich habe den Code der Tabellen MSSQL und den Code des Form angehangen.
Ich dachte, wenn die Beziehungen da sind, dann würde er die Einträge autom. machen.

Hallo [email protected]

Danke auch für Deine Info.
Ich habe das Beispiel aus der MS Beispieldatenbank.
Ist es nicht sinnvoll eine 1:n Beziehung über eine "zuordungstabelle" laufen zu lassen ?

Wenn ja, dann weiß ich nur nicht wie es funktioniert. In der Beispieldatenbank AdventureWorks ist leider keine Anwendung dabei.



Code der 3 Tabellen

USE [Herlth2]
GO

/****** Object: Table [dbo].[Firma] Script Date: 03/26/2010 09:40:07 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Firma](
[ID_Firma] [int] IDENTITY(1,1) NOT NULL,
[ID_Firma_Typ] [int] NULL,
[Firmenname] [varchar](50) NOT NULL,
[Bemerkung] [varchar](250) NULL,
[Firmenlogo] [varchar](250) NULL,
[Firma_Edatum] [smalldatetime] NULL,
[Firma_Ädatum] [smalldatetime] NULL,
CONSTRAINT [PK_Firma] PRIMARY KEY CLUSTERED
(
[ID_Firma] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[Firma] WITH CHECK ADD CONSTRAINT [FK_Firma_Firma_Typ] FOREIGN KEY([ID_Firma_Typ])
REFERENCES [dbo].[Firma_Typ] ([ID_Firma_Typ])
GO

ALTER TABLE [dbo].[Firma] CHECK CONSTRAINT [FK_Firma_Firma_Typ]
GO




USE [Herlth2]
GO

/****** Object: Table [dbo].[NL] Script Date: 03/26/2010 09:39:37 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[NL](
[ID_NL] [int] IDENTITY(1,1) NOT NULL,
[ID_Firma] [int] NULL,
[NL_Name] [varchar](50) NOT NULL,
[NL_Tel1] [varchar](25) NULL,
[NL_Tel2] [varchar](25) NULL,
[NL_Fax] [varchar](25) NULL,
[NL_Mail1] [varchar](50) NULL,
[NL_Mail2] [varchar](50) NULL,
[NL_Bemerkung] [varchar](250) NULL,
[NL_Edatum] [smalldatetime] NULL,
[NL_Ädatum] [smalldatetime] NULL,
CONSTRAINT [PK_NL] PRIMARY KEY CLUSTERED
(
[ID_NL] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO



USE [Herlth2]
GO

/****** Object: Table [dbo].[Firma_NL_ZuW] Script Date: 03/26/2010 09:39:58 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Firma_NL_ZuW](
[ID_Firma_NL_ZuW] [int] IDENTITY(1,1) NOT NULL,
[ID_Firma] [int] NULL,
[ID_NL] [int] NULL,
CONSTRAINT [PK_Firma_NL_ZuW] PRIMARY KEY CLUSTERED
(
[ID_Firma_NL_ZuW] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Firma_NL_ZuW] WITH CHECK ADD CONSTRAINT [FK_Firma_NL_ZuW_Firma] FOREIGN KEY([ID_Firma])
REFERENCES [dbo].[Firma] ([ID_Firma])
GO

ALTER TABLE [dbo].[Firma_NL_ZuW] CHECK CONSTRAINT [FK_Firma_NL_ZuW_Firma]
GO

ALTER TABLE [dbo].[Firma_NL_ZuW] WITH CHECK ADD CONSTRAINT [FK_Firma_NL_ZuW_NL] FOREIGN KEY([ID_NL])
REFERENCES [dbo].[NL] ([ID_NL])
GO

ALTER TABLE [dbo].[Firma_NL_ZuW] CHECK CONSTRAINT [FK_Firma_NL_ZuW_NL]
GO


Code des Forms der NL

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
public partial class NL : Form
{
public NL()
{
InitializeComponent();
}

private void nLBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.nLBindingSource.EndEdit();
//firmaBindingSource.EndEdit();
//firmaNLZuWBindingSource.EndEdit();

this.tableAdapterManager.UpdateAll(this.herlth2DataSet);

//nLTableAdapter.Update(herlth2DataSet.NL);
//firmaTableAdapter.Update(herlth2DataSet.Firma);
//firma_NL_ZuWTableAdapter.Update(herlth2DataSet.Firma_NL_ZuW);
}

private void NL_Load(object sender, EventArgs e)
{
// TODO: Diese Codezeile lädt Daten in die Tabelle "herlth2DataSet.Firma_NL_ZuW". Sie können sie bei Bedarf verschieben oder entfernen.
this.firma_NL_ZuWTableAdapter.Fill(this.herlth2DataSet.Firma_NL_ZuW);
// TODO: Diese Codezeile lädt Daten in die Tabelle "herlth2DataSet.Firma". Sie können sie bei Bedarf verschieben oder entfernen.
this.firmaTableAdapter.Fill(this.herlth2DataSet.Firma);
// TODO: Diese Codezeile lädt Daten in die Tabelle "herlth2DataSet.NL". Sie können sie bei Bedarf verschieben oder entfernen.
this.nLTableAdapter.Fill(this.herlth2DataSet.NL);

// ID_Firmafeld für die Combobox zuweisen
cboFirma.DisplayMember = "Firmenname";
cboFirma.ValueMember = "ID_Firma";
cboFirma.DataSource = this.herlth2DataSet.Firma;
}

private void firmaBindingSource_CurrentChanged(object sender, EventArgs e)
{

}
}
}
Attachments
private Nachricht | Beiträge des Benutzers
KenchU
myCSharp.de - Member

Avatar #avatar-3094.jpg


Dabei seit:
Beiträge: 80
Herkunft: Göttingen

beantworten | zitieren | melden

Hallo,

bei der von dir dargestellt konstellation Firma -> Niederlassung ist es nicht sinnvoll, eine Relationstabelle 'zwischenzuschalten'. Durch dieses Konstrukt ist es datentechnisch denkbar, daß eine Niederlassung verschiedenen Firmen angehört, was wohl nicht sinn der Sache ist. bei einer 1:n-Relation hält man üblicherweise im Untergeordneten Element den verweis auf das Übergeordnete Element.

Viele Grüße
roses are #FF0000 violets are #0000FF
all my base are belong to you
private Nachricht | Beiträge des Benutzers