Autor Beitrag
niggo233
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 1

Win7
C#,NXT,PHP,Html,CSS,JavaScript
BeitragVerfasst: So 18.09.11 09:00 
Hallo
ich habe ein problem ich habe zwei Tabellen in einer Daten bank die per BindingSource mit einandere verbunden sind,es ist zwar nur eine Testdatenbank aber ich brauch das speichern natürlich für weitere Datenbankanwendungen.Die erste Tabelle heißt "Publishers" und dort kommt der Verlag für ein Buch hinein.Die zweite Tabelle heißt "Books" wo BooksId,PublisherId,Title und Author vorhanden ist.Wenn ich jetzt ein Verlag eingebe und dazu ein Buch vorhanden ist dann werden nur die Bücher von diesen Verlag angezeigt dieser Verlag war aber schon außerhalb der c# programmierung eingespeichert die zweite Tabelle also Books speichert er,aber wenn ich jetzt ein neuen Verlang speichern will stürtzt das Programm ab und zeigt mir eine ewig lange Fehlermeldung über den dataGridView
Hier mal mein kompletter Code für dieses Programm:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
]namespace test_datenbank
{
public partial class Form1 : Form
{
SqlDataAdapter adapterPublisher;
SqlDataAdapter adapterBooks;
DataSet dsLibrary;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\nig go\Documents\Visual Studio 2010\Projects\Library.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand command = new SqlCommand("SELECT * FROM Publishers", conn);
adapterPublisher = new SqlDataAdapter(command);
SqlCommandBuilder cbPublisher = new SqlCommandBuilder(adapterPublisher);

adapterBooks = new SqlDataAdapter("SELECT * FROM Books", conn);
SqlCommandBuilder cbBooks = new SqlCommandBuilder(adapterBooks);

dsLibrary = new DataSet();

dsLibrary.Tables.Add("Publishers");
adapterPublisher.Fill(dsLibrary, "Publishers");
dsLibrary.Tables.Add("Books");
adapterBooks.Fill(dsLibrary, "Books");

dsLibrary.Relations.Add("Publishers_Books",
dsLibrary.Tables["Publishers"].Columns["PublisherId"],
dsLibrary.Tables["Books"].Columns["PublisherId"]);

BindingSource bsPublishers = new BindingSource();
bsPublishers.DataSource = dsLibrary;
bsPublishers.DataMember = "Publishers";
dataGridView1.DataSource = bsPublishers;

dataGridView1.DataSource = bsPublishers;
dataGridView1.Columns[0].Visible = false;
BindingSource bsBooks = new BindingSource();
bsBooks.DataSource = bsPublishers;
bsBooks.DataMember = "Publishers_Books";

dataGridView2.DataSource = bsBooks;
}

private void btnAbbrechen_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void btnSpeichern_Click(object sender, EventArgs e)
{
adapterPublisher.Update(dsLibrary, "Publishers");
adapterBooks.Update(dsLibrary,"Books");
}
}
}



Ich hoffe jemand kann mir helfen
danke schon mal im voraus
Mfg

Moderiert von user profile iconKha: ".NET Version" geändert
ujr
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 102
Erhaltene Danke: 12



BeitragVerfasst: So 18.09.11 14:34 
user profile iconniggo233 hat folgendes geschrieben Zum zitierten Posting springen:
und zeigt mir eine ewig lange Fehlermeldung über den dataGridView


Und die lautet wie?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 18.09.11 15:16 
Hier geht es nicht wirklich um Silverlight, oder :gruebel: ?

_________________
>λ=
niggo233 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 1

Win7
C#,NXT,PHP,Html,CSS,JavaScript
BeitragVerfasst: So 18.09.11 19:18 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Hier geht es nicht wirklich um Silverlight, oder :gruebel: ?

Tut mir leid silverlight nicht nur 4.0
tut mir leid
niggo233 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 1

Win7
C#,NXT,PHP,Html,CSS,JavaScript
BeitragVerfasst: So 18.09.11 19:19 
Hier die fehlermeldung:

DataGridView-Ausnahme

System.Data.InvalidConstraintExeption:Für
ForeignKeyConstraint Publishers_Books müssen die
untergeordneten Schlüsselwerte(3) in der übergeordneten
Tabelle vorhanden sein.
bei
System.Data.ForeignKeyConstraint.CheckConstrait(DataRowchildRow,DataRowAction action)
bei
System.Data.DataTable.RaiseRowChanging(DataRowChangeEven
tArgs args,DataRow eRow,DateRowAction eAction,Boolean
fireEvent)
bei System.Data.DataTable.SetNewRecordWorker(DataRow
row,Int32 proposedRecord,DataRowAction action,Boolean
isInMerge,Boolean suppressEnsurePropertyChanged,Int32
position,Boolean fireEvent,Exeption&deferred Execption)
bei System.Data.DataRow.EndEdit()
bei System.Data.DataRowView.EndEdit()
bei System.Windows.Forms.CurrencyManager.End currentEdit()
bei
System.Windows.Forms.DataGridView.DataGridViewDataConnect
ion.OnRowValidating(DataGridViewCellCancelEventArgs e)
Behandel Sie das DataError-Ereignis,um dieses Standarddialogfeld zu ersetzen
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 19.09.11 09:51 
Hallo niggo233,

es müssen erst die Bücher abgespeichert werden, damit du dann Referenzen (Ids) auf diese in der Publisher-Tabelle angeben kannst (wegen des ForeignKeyConstraints).
Also vertausche einfach die beiden Update-Methoden:
ausblenden C#-Quelltext
1:
2:
adapterBooks.Update(dsLibrary,"Books");
adapterPublisher.Update(dsLibrary, "Publishers");
niggo233 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 1

Win7
C#,NXT,PHP,Html,CSS,JavaScript
BeitragVerfasst: Di 20.09.11 16:40 
Hi
ja also daran liegt es nicht gleiche Fehlermeldung
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 20.09.11 17:22 
Wenn du einen neuen Publisher (Verlag) anlegst, setzt du denn dann die 'PublisherId' korrekt und überträgst sie für die neuen Bücher?

Ein Tutorial gibt es unter www.codeproject.com/...Quick&fr=1#xx0xx
Schau dir mal den Abschnitt 'Hierarchical data binding with a DataSet' an (die Eigenschaften DataColumn.AutoIncrement... könnten für dich interessant sein).

Für diesen Beitrag haben gedankt: niggo233
niggo233 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 1

Win7
C#,NXT,PHP,Html,CSS,JavaScript
BeitragVerfasst: Do 20.10.11 18:17 
Hi
Danke geht jetzt