ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
3602
3602
EMPFEHLEN
-
Hallo liebes Tutorials.de-Forum!
Ich hab bei mir die Visual Studio 2010 Ultimate Demo laufen um mal ein bisschen in die Anwendungsentwicklung reinzuschnuppern (es gibt doch aber auch ne kostenlose Visual Studio Version, oder?). Bisher war ich recht intensiv mit PHP und MySQL unterwegs.
Eines Tages hab ich mir eine kleine "Bibliothek" in PHP geschrieben, in der ich meine ganzen BluRays eingetragen habe (mit Filminformationen und anzeige, ob und an wen ich den Film verliehen hab usw.).
Das ganze lief dann für mich allein auf meinem Webserver.
Nun hatte ich bei einer der Buch-Aktionen ein C++ Buch gewählt und bin nun auf den Trichter gekommen, mir diese Bibliothek noch mal neu als Windows Anwendung zu schreiben.
Da C++ aber vielleicht noch etwas sehr fremd für mich ist und ich schon bei mir auf Arbeit ein bisschen mit Excel/VBA zu tun hatte, dachte ich mir ich probiers in VS2010 mal mit Visual Basic.
(puh, soweit zur Vorgeschichte :-D)
Habe mich jetzt mal mit der Studio Benutzeroberfläche vertraut gemacht und ein bisschen herumgespielt. Nun wollte ich herausfinden, wie ich das mit der Datenbank anstellen könnte.
Nach ner weile Google habe ich dann auch die "Lokale Datenbank" gefunden und denke, dass das das Richtige für mich ist, oder? (Hab das da so verstanden, dass ich eine Anwendungseigene Datenbank habe wo ich beliebig Datensätze einfügen, abrufen und löschen kann, zu der ich eigentlich nichts installiert haben muss ausser halt das .net Framework für die Anwendung selber).
Ich bin schonmal soweit, dass ich das Dataset im Designer offen habe, dort meine Tabelle drin habe und auch ein TableAdapter mit dabei ist.
Nachdem ich aus "Datenquellen" meine Tabelle in die Form ge"drag'n'droped" hab, sind da die Label mit den Spaltennamen, die Eingabefelder für neue Einträge bzw. zum Anzeigen der Tabelleninhalte und oben ist der BindingNavigator.
Soweit so gut zum Probieren.
Nun habe ich mir vorgestellt dass ich die Bibliothek im Stile des Explorer-Formulars darstelle:
In der Linken spalte eine Auflistung der einzelnen Filme (Sammelboxen sind quasi ein Ordner mit untergeordneten Einträgen der beinhalteten Filme). Wenn ich dann einen Film anklicke, kann ich in der rechten Spalte dann die Filminfos sehen bzw. bearbeiten.
Und endlich kommen wir zum Problem:
Ich weiss nicht, wie ich meine Filme auflisten lassen kann
Im Code des Explorerformulars isses ja aktuell so
Code :1 2 3 4 5 6 7 8 9 10 11
Private Sub LoadTree() ' TODO: Code zum Hinzufügen von Elementen in der Strukturansicht hinzufügen Dim tvRoot As TreeNode Dim tvNode As TreeNode tvRoot = Me.TreeView.Nodes.Add("Root") tvNode = tvRoot.Nodes.Add("TreeItem1") tvNode = tvRoot.Nodes.Add("TreeItem2") tvNode = tvRoot.Nodes.Add("TreeItem3") End Sub
Wär das ganze PHP, hätte ich das so gemacht (grob zusammengefasst):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Private Sub LoadTree() ' TODO: Code zum Hinzufügen von Elementen in der Strukturansicht hinzufügen Dim tvRoot As TreeNode Dim tvNode As TreeNode select * from movies where ID while list results ID each { if produkt = sammelbox{ tvRoot = Me.TreeView.Nodes.Add("SAMMELBOXNAME") }elseif produkt = film{ tvNode = tvRoot.Nodes.Add("FILMNAME") } } End Sub
Also dass die Abfrage gemacht wird und er jeden Eintrag einzeln bearbeitet und je nachdem was in der Spalte "Produkt" steht er den Filmnamen als Ordner (Sammelbox) oder Datei (eiznelner Film) darstellt und alles auflistet.
Konnte man das soweit gut verstehen? Wie mach ichn das?
Also wie verbinde ich zu meiner Datenbank und wie lautet der richtige code für diese while schleife?
Hat da einer Lust mir das zu erklären/zeigen?
Vielen Dank schonmal im Vorraus!
Gruß,
Maik
-
Ja es gibt kostenloste IDEs von Microsoft, die heißen dann "Microsoft Visual Basic Express" oder "Microsoft Visual C# Express". Siehe hier.
Zur While-Schleife:
Ich kann kein PHP, die Where- und Results-Ausdrücke verstehe ich nicht.
Aber du willst vermutlich etwas in dieser Art machen:
Das funktioniert natürlich nur, wenn movies ein Type ist, der IEnumerable<MovieType> implementiert (eine List<> tut das zum Beispiel) und wenn MovieType der Type ist der deine Objekte darstellt.Code csharp:1 2 3 4 5 6 7
foreach (MovieType item in movies.Where<Deine PHP-Bedingung in C#-Syntax>) { if (item.Product == "sammelbox") {Me.TreeView.Nodes.Add("SAMMELBOXNAME");} else if (item.Product == "film") {tvNode = tvRoot.Nodes.Add("FILMNAME");} }
Geändert von Shakie (14.12.10 um 12:35 Uhr)
hihi = -h²
-
Ah das sieht wirklich so aus wie ich das brauche. Das heisst ich deklariere vorher noch dass movietype eine liste ist.
ausserdem muss ich sicher auch noch angeben dass diese liste eine liste der Ergebnisse der SQL abfrage meines Adapters ist, oder? Wie muss das aussehen? Und wie sag ich ihm,dass er meinen Adapter ansprechen soll? (Schreiben mit dem Handy ist echt ********
)
-
Der Code in meinem vorherigen Post war C#. Ich hoffe das hat dich nicht verwirrt.
Nein. Du deklarierst movies als Liste, wobei die Liste Elemente vom Typ movietype ist. Was movietype ist, musst du natürlich auch noch definieren. Zum Beispiel so:
Code vbnet:1 2 3 4
Public Class movietype Public Product As String Public WasWeißIch As Integer End Class
Ja. Hab' aber keine Ahnung von SQL in .NetCode vbnet:1
Dim movies As List(Of movietype)
hihi = -h²
-
Okay, vielen Dank Shakie!

Ich habe jetz VB2010 Express und werd von nun an damit weiterarbeiten.
Das Where ist SQL und besagt in der Zeile, dass alle Daten ausgelesen werden sollen wo ein Wert in der Spalte ID steht. Man hätte auch noch WHERE ID = 12 nehmen können, dann hätter den Datensatz ausgelesen, der in der ID eine 12 zu stehen hat
Das while list results blabla heisst, dass er in der while-schleife die Resultate der Abfrage je ID auflistet.
Ok... bin nebenbei auch dabei, mir die Galilio Computing Sachen reinzuziehen
(Werd mir das auch Bestellen, denk ich)
Da gibts ja nun auch ein gutes (sehr gutes) Beispiel für ne lokale Datenbank. Die ist aber aus Access. Soweit ich das ausm Code rauslese, wird ja da auber auch nur die mdf Datei eingelesen. So wirds doch bei der Lokalen Datenbank die ich in VB 2010 express erstellen kann auch nur gemacht, oder?
Gibts denn da im Code für die Verbindung große Unterschiede zwischen der Access und der SQL Compact DB? Ich hab das Gefühl dass nur der Provider anders heisst. Also statt OleDB SQL oder sowas.. kann mir da einer Hintergrundinfo geben? Das wär echt klasse und ich denke, auch mein Durchbruch endlich weiter zu kommen
Edit:
Aaahh okay.. ich hab ein bisschen rumgespielt und raus gekommen ist, dass das Beispiel in dem Galileo Buch nahezu 1 zu 1 funktioniert. Lediglich der Provider muss geändert werden: Statt "Provider=Microsoft.Jet.OLEDB.4.0;" also "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;"
so, ich hoffe damit, dass ich nun erstmal allein weiterkomm. Das buch müsste übermorgen auch bei mir eintreffen
Vielleicht wird ja aus meinem Projekt ein kleines Tutorial
Wenns klappt, poste ich morgen Abschliessend mal den Explorer-Code um den Thread abzuschliessen.
Edit2:
So und hier der Code. So funktionierts aktuell bei mir, wie ich es mir vorgestellt hatte. Aber ich glaube ich werde für das Projekt dann doch ein schöneres Design wählen
Ganz ganz oben im Code der Form:
Code vbnet:1
Imports System.Data.OleDb
Und später dann:
Code vbnet: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
Private Sub LoadTree() ' TODO: Code zum Hinzufügen von Elementen in der Strukturansicht hinzufügen Dim tvRoot As TreeNode Dim tvNode As TreeNode Dim con As New OleDbConnection Dim cmd As New OleDbCommand Dim cmd2 As New OleDbCommand Dim reader As OleDbDataReader Dim reader2 As OleDbDataReader con.ConnectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;" & "Data Source=movies.sdf" cmd.Connection = con cmd2.Connection = con cmd.CommandText = "select * from filme" Try con.Open() reader = cmd.ExecuteReader() Do While reader.Read() If (reader("Produkt") = "Sammelbox") Then tvRoot = Me.TreeView.Nodes.Add(reader("name")) cmd2.CommandText = "select * from filme where Gruppe = '" & reader("Gruppe") & "' AND Produkt = 'Sammelboxfilm'" Try reader2 = cmd2.ExecuteReader() Do While reader2.Read() tvNode = tvRoot.Nodes.Add(reader2("name")) Loop reader2.Close() Catch ex2 As Exception MessageBox.Show(ex2.Message) End Try ElseIf (reader("Produkt") = "Einzelfilm") Then tvNode = Me.TreeView.Nodes.Add(reader("Name")) End If Loop reader.Close() con.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
Dankeschön und bis bald
Geändert von embi (16.12.10 um 15:50 Uhr) Grund: Lösung gefunden
Ähnliche Themen
-
Webservice: Visual Studio 2008 vs Visual Studio 2010 Express for Windwos Phone
Von Johannes7146 im Forum .NET Web und KommunikationAntworten: 4Letzter Beitrag: 27.09.10, 23:06 -
Visual Studio 2010 & VB reload einer Internetseite
Von warng im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 13.08.10, 19:40 -
qt4 und Visual Studio 2010
Von countryqt30 im Forum C/C++Antworten: 7Letzter Beitrag: 18.07.10, 10:59 -
Visual Studio 2010 Ultimate Deutsches Sprachpaket
Von Danielku15 im Forum Coders TalkAntworten: 0Letzter Beitrag: 25.05.10, 10:46





Zitieren
Login





