Autor Beitrag
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Do 27.03.08 21:28 
Mahlzeit,

ich bastle grad mein erstes Datenbankgestütztes Progrämmchen mit WPF. Im Moment möchte ich ein Grid (Xceed) aus einer Tabelle füllen, ganz simpel.

Ich habe im Designer ein DataSet angelegt (EinkaufManagerDataSet) und da auch die fragliche Tabelle hinzugefügt (vendor). Mein Versuch sieht zur Zeit so aus:


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
    
public partial class VendorAdministration : Window
    {
        private DataTable vendors;
        private DataSet emds;
        public VendorAdministration()
        {
            InitializeComponent();
            emds = new EinkaufManagerDataSet();
            SqlDataAdapter adapter = new SqlDataAdapter("select * from vendor","Data Source=C:\\Users\\noidic\\Documents\\Visual Studio 2008\\Projects\\EinkaufOptimierer\\EinkaufOptimierer\\EinkaufManager.sdf");
            adapter.Fill(emds);
            vendors = emds.Tables["vendor"];
            Xceed.Wpf.DataGrid.DataGridCollectionView dataGridCollectionView = new Xceed.Wpf.DataGrid.DataGridCollectionView(vendors.DefaultView);
            dgVendor.ItemsSource = dataGridCollectionView;
        }
    }


Ich habs zuerst ohne den SqlDataAdapter versucht. Dann hatte ich im Grid zwar die Spalten, aber keine Daten. Die Verbindung DataTable zu Grid scheint also zu funktionieren.

Als nächstes habe ich die beiden Zeilen mit dem SqlDataAdapter hinzugefügt, der ConnectionString stammt aus der Datenbankübersicht.
Der Effekt ist nun der, dass ich beim Aufruf des Fensters die Meldung bekomme, dass die Verbindung zur Datenbank fehlgeschlagen ist.

Die Datenbank ist der MS SQL-Server Compact 3.5, angelegt direkt im VS.

Bevor ich jetzt noch Stunden weiterprobiere, wollte ich mal kurz nachfragen, ob jemand direkt was dazu sagen kann.

_________________
Bravery calls my name in the sound of the wind in the night...
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 27.03.08 23:33 
Sollte man da nicht eher den SqlCeDataAdapter einsetzen ;) ?

PS: Das DataSet musst du nicht selbst erstellen, das lässt sich auch generieren. Sollte es sogar automatisch werden, wenn man eine Datenbank erstellt/hinzufügt.

PPS: Wenn schon WPF, warum dann nicht auch Linq2SQL :mrgreen: ?
noidic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Fr 28.03.08 17:13 
Werd das mit dem caedapter mal testen, danke erstmal.

Warum nicht LINQ.. nun, ich wollte mich erstmal an das vermeintlich einfachere begeben, Daten in nem Grid anzuzeigen (komm halt von Delphi, da ist das mit wenigen klicks getan).

_________________
Bravery calls my name in the sound of the wind in the night...
noidic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Fr 28.03.08 17:34 
Nun gut, umgebaut auf ceAdapter, Assembly referenziert, nun meckert er, dass die sqlcerne35.dll angeblich nicht gefunden werden kann. Die dll ist vorhanden (Verzeichnis C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5). Als Referenz kann ich sie nicht hinzufügen, da das anscheinend kein Assembly ist. Google liefert mir zu dem dll-Namen nicht ein Result, was mich schon verwundert stimmt.

Jemand ne Idee?

_________________
Bravery calls my name in the sound of the wind in the night...
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 28.03.08 18:10 
user profile iconnoidic hat folgendes geschrieben:
... nun meckert er, dass die sqlcerne35.dll angeblich nicht gefunden werden kann. Die dll ist vorhanden (Verzeichnis C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5). Als Referenz kann ich sie nicht hinzufügen, da das anscheinend kein Assembly ist.

Wenn die DLL vorhanden ist (und eine NET-Assembly ist), kann sie auch als Referenz hinzugefügt werden. Wenn er diese DLL anmeckert, dann gibt es sie auch als NET-Assembly. (Assembly ist übrigens ein Oberbegriff für EXE und DLL unter NET.) Für die Referenzen gibt es mehrere Quellen: den GAC (dort sind die "normalen" NET-Assemblies), Deine eigenen Projekte und alles andere, was durch "Browse"/"Durchsuchen" hinzugefügt werden kann.

Für solche "Sonderfälle" steht eben die letzte Möglichkeit bereit.

Jürgen
noidic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Fr 28.03.08 19:29 
Wenn ich versuche, die Dll als Referenz hinzuzufügen, bekomme ich die Meldung, dass dies nicht geht, ich soll sicherstellen, dass die Datei verfügbar und eine .NET - Assembly oder COM-Bibliothek ist.
Als Datebieschreibung steht bei der dll "managed extensions", managed code war doch nicht-.NET-code, oder?

Ich weiss da im Moment nicht weiter, der Namespace System.Data.SqlServerCe ist verfügbar, aber beim Verbindungsaufbau meckert er halt die DLL an...

_________________
Bravery calls my name in the sound of the wind in the night...
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 28.03.08 20:01 
Hallo,

mit "managed code" wird eigentlich "sicherer NET-Code" verstanden. Aber wer weiß, in welchem Zusammenhang mal die eine, mal eine andere Formulierung verwendet wird...

Vorschlag: Aktiviere FUSLOGVW.exe "NET Fusion Log-Viewer"; bei NET 2.0 befindet sich das im Verzeichnis SDK\v2.0\Bin. Das protokolliert alle Versuche, eine Assembly einzubinden, und gibt recht ausführliche Begründungen, wenn etwas schief geht. Unter 3.5 gibt es vielleicht ein anderes Tool dafür; aber so etwas wie ein Logbuch für Fusionsversuche dürfte es trotzdem geben.

Vielleicht erhältst Du auf diesem Weg eine ausführliche Hilfe. Jürgen
noidic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Fr 28.03.08 22:50 
Das Tool liefert mir kein Ergebnis, ich habe allerdings auch nur das 2.0-SDK, das 3.5 schlägt bei der Installation fehl.

Ich hab mir die Fehlermeldung mal genauer angeschaut, es scheint, als würde die dll beim Ladeversuch tatsächlich nicht gefunden. Gibt es, ähnlich wie bei Delphi, Suchpfade, die ich vielleicht anpassen müsste?

_________________
Bravery calls my name in the sound of the wind in the night...
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 29.03.08 00:14 
user profile iconnoidic hat folgendes geschrieben:
Verzeichnis C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5
O lala, ein x64 ;) . Zielplattform (Projekteigenschaften -> Erstellen) auch auf x86 gestellt, wie es so schön versteckt in der Hilfe steht :mrgreen: ?



user profile iconnoidic hat folgendes geschrieben:
nun, ich wollte mich erstmal an das vermeintlich einfachere begeben, [...]
Das nehme ich niemandem ab, der sich mit WPF beschäftigt :lol: . Aber Linq To SQL ist wirklich eher simpel gestrickt (die Allzweck-Kanone kommt erst mit dem Entity-Fx) und ein O/R-Mapper passt imo einfach perfekt zu WPF ;) .
noidic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Sa 29.03.08 00:55 
Mh, die Einstellung für das Zielsystem find ich bei mir nicht, kann das sein, dass die bei der Express-Edition garnicht verfügbar ist?

_________________
Bravery calls my name in the sound of the wind in the night...
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 29.03.08 11:26 
Könnte gut sein, in Verbindung mit Compact wäre das aber natürlich ein Witz :gruebel: .
Aber da sie wohl kaum MSBuild ebenfalls beschnitten haben, sollte der manuelle Weg immer noch funktionieren: Öffne deine .csproj-Datei mit einem Texteditor und füge im ersten PropertyGroup-Abschnitt (der sollte für Debug und Release gleichzeitig gelten) <PlatformTarget>x86</PlatformTarget> ein.
noidic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: So 30.03.08 16:57 
Nu hab keine Fehlermeldung mehr, dafür wieder ein leeres Grid.. Ich bin jetzt erstmal eien Woche weg, vermutlich werd ich mich danach doch mal mit LINQ beschäftigen.

_________________
Bravery calls my name in the sound of the wind in the night...