Zum Inhalt springen

Erste Aufgabe in der Ausbildung FIAE - Kundenverwaltung in C# mit WPF


Empfohlene Beiträge

Geschrieben

Hallo !

Ich habe meine erste Übungsaufgabe erhalten in meiner Ausbildung zum FIAE.

Ziel ist es eine Funktionierende Kundenverwaltung zu erstellen basierend auf einer Access Datenbank mit C# und einer WPF Oberfläche.

Ich beisse mir jetzt schon seit dem 01.08 die Zähne daran aus, da ich nur sehr geringe Vorkenntnisse habe.

Ich finde einfach kein vernünftiges Tutorial was mir erklärt wie ich diese Aufgabe zu meistern habe und ich es gleichzeitig verstehe.

Ich hoffe hier auf Tipps und Tricks wie ich diese Sache am besten angehe.

Mein Ausbilder möchte das ich durch Selbstrecherche dieses Projekt erstelle und deshalb hab ich auch nicht die Möglichkeit im Betrieb zu fragen.

Anforderungen:

Kunden hinzufügen

Kunden löschen

Kunden bearbeiten

Daten exportieren /importieren (Keine Vorgabe für das Dateiformat)

Vielen Dank :)

Geschrieben

Klappt garnichts :( Also hab keinen wirklichen Ansatz

Hab eine Access Datenbank erstellt und weiß nicht wie ich die in ein WPF Datagrid bekomme und wie ich dann die Datenbank ansteuern kann :/

Geschrieben

Das ansprechen hab ich hier schon versucht:

namespace ConsoleApplication4

{

class Program

{

static void Main(string[] args)

{

Csharp_Access_Datenbank();

}

public static void Csharp_Access_Datenbank()

{

OleDbConnection con = new OleDbConnection(

@"Provider=Microsoft.ACE.OLEDB.12.0;

Data Source=C:\Users\tpr\Documents\Kundendaten.accdb");

con.Open();

string strSQL = "SELECT * FROM Kundendaten";

string insertStatement = "INSERT INTO 'Kundendaten' "

+ "([Name],[Nachname],[straße],[Hausnummer],[Postleitzahl],[Ort]) "

+ "VALUES (Priwe,Tim,Vahrenort,6,44388,Dortmund)";

string updateStatement = "UPDATE Kundendaten SET Nachname = ''Test'' WHERE Nachname = ''Priwe''";

string deleteStatement =" DELETE [Kundendaten.*] FROM Kundendaten WHERE Vorname=Tim";

OleDbCommand cmdread = new OleDbCommand(strSQL, con);

OleDbCommand cmdinsert = new OleDbCommand(insertStatement, con);

OleDbCommand cmdupdate = new OleDbCommand(updateStatement, con);

OleDbCommand cmddelete = new OleDbCommand(deleteStatement, con);

cmdinsert.ExecuteNonQuery();

cmdupdate.ExecuteNonQuery();

cmddelete.ExecuteNonQuery();

OleDbDataReader dr = cmdread.ExecuteReader();

while (dr.Read())

{

Console.WriteLine(dr[0].ToString());

}

dr.Close();

con.Close();

}

Klappt aber nicht :/

Geschrieben

WAS klappt denn nicht? So wie ich das jetzt sehe baust Du eine Verbindung auf, suchst nach Datensätzen, Updatest die DB und dann löscht du den Datensatz wieder... Das alles in einer Methode. Mach mal mehrere Methoden z.b. "SelectFromDb(), DeleteFromDb(), InsertIntoDb(), UpdateDb(), ViewData()" und dann ist es noch ein großer Vorteil, wenn du dir einen Brakepoint setzt und jeden Schritt einzeln durch das Programm gehst!

Geschrieben

ich bin nicht programmierer, aber meines wissens steht am anfang jeder programmieraufgabe solche sachen wie struktogramm, pap, klassendesign, uml usw.

wie sieht es damit aus? hast du sowas gemacht oder programmierst du erst mal los und schaust, wie weit du kommst....

Geschrieben

so ein pap muss ja erst mal nicht normgerecht sein. aber man muss sich doch im vorfeld mal gedanken machen, wie die software aufgebaut ist und welche module man so braucht und was dieeinzelnen module so tun sollen....

Geschrieben (bearbeitet)
string insertStatement = "INSERT INTO 'Kundendaten' "

+ "([Name],[Nachname],[Straße],[Hausnummer],[Postleitzahl],[Ort]) "

+ "VALUES (Priwe,Tim,Vahrenort,6,44388,Dortmund)";


string updateStatement = "UPDATE Kundendaten SET Nachname = ''Test'' WHERE Nachname = ''Priwe''";



string deleteStatement =" DELETE [Kundendaten.*] FROM Kundendaten WHERE Vorname=Tim";


Die SQL Statements dürften soweit ich weiss auch in ACCESS nicht in der Form funktionieren. Textattribute müssen in den Statements auch immer als solche angegeben werden ('einfache Anführungszeichen'). Hier mein Vorschlag:

string insertStatement = "INSERT INTO Kundendaten ([Vorname],[Nachname],[Straße],[Hausnummer],[Postleitzahl],[Ort]) "

+" VALUES ('Tim', 'Priwe', 'Vahrenort', '6', '44388', 'Dortmund') ";


string updateStatement = "UPDATE Kundendaten SET Nachname = 'Test' WHERE Nachname = 'Priwe' ";


string deleteStatement =" DELETE FROM Kundendaten WHERE Vorname = 'Tim' ";

Ich weiss zwar nicht wie du die Datentypen in der Accesstabelle angegeben hast aber Hausnummer und PLZ sollten Text sein.

Die Reihenfolge der VALUES hast du in der INSERT Anweisung vorgegeben. Anscheinend aber anschliessend Name und Nachname vertauscht.

Desweiteren heisst die erste Spalte in deinem INSERT-Statement "Name", im DELETE-Statement versucht du aber auf die Spalte "Vorname" zuzugreifen. Wie heisst die Spalte denn nun? (In meinem Beispiel bin ich einfach Mal davon ausgegangen, dass Vorname richtig ist)

Bearbeitet von mepp
Spalte Name/Vorname
Geschrieben
public MainWindow()

{

InitializeComponent();

displaydata();

}

void displaydata(){

OleDbConnection con = new OleDbConnection(

@"Provider=Microsoft.ACE.OLEDB.12.0;

Data Source=C:\Users\tpr\Documents\Kundendaten.accdb");

con.Open();

string strSQL = "SELECT * FROM Kundendaten";

OleDbCommand cmd = new OleDbCommand(strSQL, con);

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

DataTable dt = new DataTable();

da.Fill(dt);

OleDbDataReader dr = cmd.ExecuteReader();

while (dr.Read())

{

listView1.DataContext = dt.DefaultView;

}

dr.Close();

con.Close();

cmd.ExecuteNonQuery();

Soweit hab ich das jetzt und die Datenbank wird auch gelesen (Mit Messagebox getestet)

Nur warum will er mir die nicht in der Listview anzeigen?

Fehler zeigt er folgenden:

'The invocation of the constructor on type 'KundenverwaltungNrx.MainWindow' that matches the specified binding constraints threw an exception.' Line number '3' and line position '9'.

Geschrieben

Trotzdem. Die Datatable ist ja bereits gefüllt. Daher ist es egal wie bzw. woher.

Die Eigenschaften und Methoden der Objekte sind auch die gleichen in C#.

Es sollte egal sein, ob ein Tutorial in C# oder VB.Net ist. Lässt sich alles leicht übertragen.

Vorteil wenn man ein Tutorial in VB sieht und das ganze erst nach C# portieren muss: Man versteht eher worum es geht und wie die Dinge bewerkstelligt werden, da ein einfaches copy&paste nicht möglich ist (Bei Videos eh nicht, abschreiben geht aber dann auch net.)

VB ist auch nur ein unliebsamer Dialekt im .NET Framework. Verhält sich ähnlich wie Bayrisch/Schwäbisch zu Deutsch ;-) Man muss es verstehen können, deswegen aber noch lange nicht selbst nutzen.

Geschrieben
Das solltest du nicht in physikalischer Nähe zu einem C# Entwickler sagen :P

Als VB.NET Entwickler, sage ich, dass ein C# Entwickler besser nicht hochnäsig die Nase rümpft in physikalischer Nähe......

Geschrieben

Ich habe es jetzt soweit hinbekommen, dass die Daten im Listview angezeigt werden und ich in einem Formular im Programm Daten hinzufügen kann.

Jetzt hab ich schon wieder das nächste Problem. Ich brauch einen Befehl dem ich den "Hinzufügen" Button zuweisen kann der das Listview aktualisiert damit es den neuen Datensatz direkt im Programm anzeigt...

Gibt es da eine simple Möglichkeit? Der hinzufügen Button befindet sich in einem anderen Fenster falls das wichtig ist.

Geschrieben

Mein Tipp sind die Lernvideos von Galileo Computing "Visual C# 2010" sowie das Buch Visual C# 2010. Wenn du sehr wenig kenntnisse hast würde ich mich zu allererst mit dem Buch "Programmieren Lernen" von Galileo Computing befassen. Hab auch meine Ausbildung als FIAE am 1.8.2012 angefangen mit keine Vorkenntnissen somit habe ich mir das Buch "Programmieren Lernen" angelegt nach dem Buch konnte ich belieb in einer Programmiersprache Programmieren also bzw. ist es mir leichter gefallen. Zurzeit lerne ich .Net 4.0 + C#2010. mit dem Handbuch von Microsoft Press.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...