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

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von oehrle
Thema: Untypisiertes Dataset: Update überschreibt vorigen Datensatz oder Concurrency violation
Am im Forum: Datentechnologien

Meine vorige Datenzeil wurde immer komplett null gesetzt, das hängt damit zusammen, das ich direkt vor dem AddNew() alle meine Checkboxen zuerst gelöscht habe. Das darf ich baürlich erst machen wenn die neue DataRow schon steht.
Das mit dem ConcurrencyViolation hing mit der Vergabe der automatisschen PK-ID der Tabelle zusammen. Hab ich deaktiviert, und hat gefunzt.

Thema: Untypisiertes Dataset: Update überschreibt vorigen Datensatz oder Concurrency violation
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL 2008 Express>
Hi, probiere schon seit einem ganzen Tag an einem Problem beim updaten. Zuerst mal, ich verwende ein untypisiertes Dataset.
In meiner Form benutze ich zum navigieren ein BindingNavigator. Ich füge einen neuen Datensatz über die BindingSource hinzu:
_bsHM_F.Current;.AddNew();

Dann hole ich den aktuellen Datensatz in eine DataRowView:
_drv = (DataRowView) _bsHM_F.Current;

Nun trage ich alle relevante Daten in die _drv ein und mache dann das update.
Davor generiere ich noch den SQL-CommandBuilder:
_sqlcmb = new SqlCommandBuilder(_arSqladap[0]);

Dann kommt das Update:
_arSqladap[0].Update(_MVDataSet.Tables["HMF"]);

Ich hänge mal hier den Code ran, wenn ich die Daten sichere:


       private void stp_btnSave_Click(object sender, EventArgs e)
        {
            DataRowView drv = (DataRowView)_arBsSchichtTabs[0][_arBsSchichtTabs[0].Count-1];
            drv.Row.BeginEdit();
            if (drv != null)
            {
               if (Convert.ToDateTime(drv.Row["Datum"]) == Convert.ToDateTime("01.01.2000"))
                {
                    drv.Row["Datum"] = monthCal.SelectionStart.Date;
                    drv.Row["Datum"] = aktTagDtime;
                }

                drv.BeginEdit();
                foreach (Control ctrl in pnl_Frueh.Controls)
                {
                    if(ctrl is CheckBox)
                    {
                        CheckBox cbx = (CheckBox) ctrl;
                        drv[ctrl.Name] = cbx.CheckState;
                    }
                }
                drv.Row.EndEdit();
            }

            
            try
            {
                this.Validate();
                _arBsSchichtTabs[0].EndEdit();
            }
            catch (ConstraintException conexc)
            {
                MessageBox.Show("Es kann kein neuer Datensatz angelegt werden, wenn das Zugehörige Datum schon in einem \n anderen Datensatz verwendet wird. Bitte anderes Datum auswählen !!", "Datum wurde schon verwendet", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                _arBsSchichtTabs[0].CancelEdit();
                return;
            }

            try
            {
                _sqlcmb = new SqlCommandBuilder(_arSqladap[0]);
                              //{
                              //    SetAllValues = false,
                              //    ConflictOption = ConflictOption.OverwriteChanges
                              //};
                _arSqladap[0].Update(_MVDataSet.Tables["HMF"]);
                _MVDataSet.Tables["HMF"].AcceptChanges();
                MessageBox.Show("Datensatz wurde korrekt übernommen !", "Aktualisierung / Eintrag erfogreich");
                
            }
            catch (SqlException sqlex)
            {
                MessageBox.Show("Es kann kein neuer Datensatz angelegt werden, wenn das Zugehörige Datum schon in einem \n anderen Datensatz verwendet wird. Bitte anderes Datum auswählen !!", "Datum wurde schon verwendet", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                _arBsSchichtTabs[0].CancelEdit();

                if (monthCal.DataBindings.Control == null)
                    this.monthCal.DataBindings.Add(new System.Windows.Forms.Binding("SelectionRange", this._arBsSchichtTabs[0], "Datum", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation, null, "d"));
                return;
            }
            


            if (monthCal.DataBindings["SelectionRange"] == null)
                this.monthCal.DataBindings.Add(new System.Windows.Forms.Binding("SelectionRange", this._arBsSchichtTabs[0], "Datum", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation, null, "d"));

            _arBsSchichtTabs[0].Sort = "Datum ASC";
            KalenderDatumMarkieren();
            // BerechneVerbrauch();

            tsp_Speichern.Enabled = false;
        }

Ich hatte es schon soweit, dass die Datensätze korrekt abgespeichert wurden, aber der letzte Datensatz wurde immer alle Spalten in der Datentabelle auf null gesetzt. Warum?

Thema: Linq to EF Join-Abfrage Auswahl aller Spalten möglich?
Am im Forum: Datentechnologien

Hi, ich habe das Problem vor längerem gelöst. Ich habe einfach dieseleb Query nochmals abgesetzt, und in einer weiteren var abgelegt. Dann habe ich die beiden Queries in eine neue Datentabelle eingelesen. Die Spaltennamen habe ich mir über eine SChleife aus den beiden Abfrageergebnissen ausgelesen, und so die gemeinsame Tabellenstruktur erstellt, und dann die ganzen Datenreihen aus den Ergebnissen wieder mit einer Schleife 1:1 in die Tabelle geschrieben. Dann muß die Tabelle nur noch mit dem DataGridView verbunden werden. Ist zwar ertwas umständlich, aber eine andere Lösung hatte ich nicht gesehen und funktioniert schnell und gut.

Thema: Linq to EF Join-Abfrage Auswahl aller Spalten möglich?
Am im Forum: Datentechnologien

Hi, bevor ich da noch lang dran rumprobier, das geht also mit der JOIN definitiv so nicht, ist das korrekt???
Naja, finde das Linq schon ne tolle Sache, manche Dinge hab ich auch noch nicht begriffen. Aber wenn es sowas nicht kann, das stimmt mich ein wenig nachdenklich. Gibt's da Besserung ab FW 4.0 ??
Arbeite mit VS 2008 Prof, von 2010 hab ich mir erst die Expressversion gezogen, und weiß nicht wie da EF unterstützt wird.

Ich habe das Projekt davor mit ADO.Net realisiert. Bei der ersten Auswahl vom WErkzeugprogramm in der Kopf - Tabelle wird auf 16000 Werkzeugdaten zugegriffen, die nach diversen Abmessungen anhand der Datensaplten abgesucht werden können. Dann beginnt je nach Arbeitanwendung die Verzweigung in die 24 Tabellen. Somit muß ich z.B. wenn 3500 Datensätze in der Kopftabelle in das Auswahlkriterium fallen, von allen 3500 der Fremdschlüssel in eine Tabelle gespeichert werden (per SQL-Command), da die SQL-Abfragerei ja in den DataSet-Tabellen auch nicht funktioniert. Diese Geschichte ist für den Rechner sehr Zeitintensiv, diie Tabellen dann immer wieder direkt vom SQL-Server auszulesen, weil ich die eben nicht im Ram zwischenspeichern kann. Das ist eben das tolle an Linq to DataSet oder Linq to EF.
Muß ich mir was überlegen, wie ich die ganze Sache anders aufziehen könnte.

Thema: Linq to EF Join-Abfrage Auswahl aller Spalten möglich?
Am im Forum: Datentechnologien

Habe das mal getestet. Geht nicht. Das ist doch irgendwie total irre, oder? Irgendwie muß es doch möglich sein, alle Tabellen von beiden tabellen in ein DGV zu bekommen.
Also, ich muß in meinem Projekt nur Abfragen machen, nichts zurückschreiben. In meinem Projekt habe ich eine Tabelle mit Werkzuegdaten, dazu sind 24 weitere tabellen mit Daten vorhanden, die über einen Fremdschlüssel zueinander passen. Dmit bei den Abfragen, die nacheinander von abfolgen können nicht zu viel Zeit verloren geht, sollen die Daten erst mal lokal abgelegt werden (RAM). Das geht mit DataSet oder Entitiy Framework. Habe dasselbe nun auch mal mit DataSet probiert, ist selbes Problem. Dort muß ich beide Typen in eine DataTable bringen (.CopyToDataTable()). Nun, irgendwie muß ich von
select new{k,g}
durchlaufen lassen (SChleife) und die Spaltentypen und Bezeichnungen in eine DataTable erzeugen lassen. Was anderes fällt mir nun nicht ein.
Sonst jemand eine Idee?

Thema: Linq to EF Join-Abfrage Auswahl aller Spalten möglich?
Am im Forum: Datentechnologien

Hi, habe mir das durchgeschaut, aber nicht das treffende gesehen. Gib mir mal einen Tipp.
In diesem Link wird ja nur ein Beispiel von einem Objekt gemacht. Ich habe zwei Tabellen.

Mein Ansatz:


 var v = from k in _cnc.Kopf
                    join c in _cnc.C1
                        on k.Dateiname equals c.Bezeichnung
                    select new {k, c};


            dgv_SqlAusgabe.DataSource = v.ToList();                      // Die Datensätze werden im DGV nicht ausgegeben,


Funktioniert aber nur so wie zuvor beschrieben, 2 Spalten weren ausgegeben

Thema: Linq to EF Join-Abfrage Auswahl aller Spalten möglich?
Am im Forum: Datentechnologien

Hab mir das angesehen, aber der springende Punkt habe ich nicht gefunden ?? Wie krieg ich das Zueg ins dgv??

Thema: Linq to EF Join-Abfrage Auswahl aller Spalten möglich?
Am im Forum: Datentechnologien

Hi, habe das probiert, das Ergebnis hatte ich gestern schon.
Ich bekomme nur zwei Spalten angezeigt, aber die Anzahl der Datenzeilen die Ausgegeben werden sollten die stimmt überein, wie wenn ich das mit SQL mache. Habe mir das LinqPad gezogen, dort die DB verbunden und das mal simuliert. Ich bekomme dort alle Spalten der beidne Tabellen.
Aber im C#-Prog funktionierts nict. Vielleicht spielt die Typisierung eine Rolle?

Zuallererst mache ich von der Entity eine globale Instanz, auch von jeder Tabelle.

Nach dem Initialisieren der Form, lade ich jede Tabelle in eine List <T>. Dann habe ich alle Daten im RAM, weil ich mit meinem Programm sehr viele Suchanfragen in den Daten durchführen werde.

Nun, die Daten liegen vor, ich gebe das so ein:


            var v = from k in _cnc.Kopf
                    join c in _cnc.C1
                        on k.Dateiname equals c.Bezeichnung
                    select new {k, c};

aber als Ausgabe im DataGridView bekomme ich nur zwei Spalten, mit dem Namen der Applikation und dem Tabellennamen.
So ein Käse ...

Ha, du wohl auch Schwarzwald ??

Thema: Linq to EF Join-Abfrage Auswahl aller Spalten möglich?
Am im Forum: Datentechnologien

Hallo, das funktioniert so nicht. Noch mal zu meiner Erklärung: Ich habe zwei Tabellen, die Tabelle _kopf und die Tabelle _c1
Die Tabelle _kopf hat eine Spalte die mit der Tabelle _c1 übereinstimmt. Es ist aber keine Fremdschlüsselbeziehung in der Datenbank angelegt. Ich möchte nun die alle Datensaätze der Tabelle _kopf, wo die Fremdschlüsselspalte identisch mit der Beziechnung in der Bezugspalte der Tabelle _c1 ist.

In SQL mach ich das über Join, oder über Where.

In Linq to EF kann man das auch über Join machen, hat aber den Nachteil das ich nicht weiß wie ich alle Spalten auf einen Schlag auswählen kann, da ich sonst bei
SELECT NEW{_kopf.xxx, _kopf.yyy, _c1.xxx, _c1.yyy .....) alles eintrgaen muß. Ich habe sehr viel Spalten und ich möchte dann diese Muster für andere Tabellen weiterverwenden. Gibts da keinen generellen BEfehl, der alle Spalten übernimmt????

Thema: Linq to EF Join-Abfrage Auswahl aller Spalten möglich?
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQLEXPRESS 2008>

Hi, ich arbeite mich im moment in Linq to EF ein.
Habe schon einige Fehler geknackt, die einem Frischling so passieren.
Im moment bin ich an einer Abfrage mit Join. Die abfrage funktioniert auch. Nur möchte ich in der select new{} nicht alle Spalten der beiden Tabellen für die Ausgabe alle eingeben, sondern alle irgendwie mit einer Bezeichnung auswählen, wie bei SQL (Select * FROM _C1) als Besipiel. Geht das in Linq? Hintergund: in mnchen Tabellen sind 40 Spalten abgelegt, das ist dann mühsam.
Kann mir jemand helfen?


var v = from g in _c1
                    join p in _kopf on g.Bezeichnung equals p.Dateiname
                    select new {g,p};   // hier müßte sowas wie bei SQL select * geben

Thema: Keine Properties bei Linq to EF vorhanden
Am im Forum: Datentechnologien

Hi FZelle, danke. Damit ich bisher die Ausgabe ohne Fehler anzeigen konnte, habe ich die Spalte einfach ausgeblendet. Nun aber, mein DGV wird dynamisch erzuegt, je nachdem wie ich Tabellen in der Abfrage Joine oder Spalten auswähle. Jetzt hab ich schon rumprobiert, habe auch etwas gefunden. Dann muß ich aber erst die Spalte anlegen, und dann der DGV zuweisen. Nur geht das ja nicht, weil ich die Tabelle je nach Abfrage generiere.Wie mach ich das? Muß ich da ein DataEvent abfangen und dann neu formatieren??

Thema: Keine Properties bei Linq to EF vorhanden
Am im Forum: Datentechnologien

DIe Fehlermeldung tritt bei der Abfrage auf, wenn die Datenzeilen in das DataGridView übergeben werden. Bei jedem Datensatz. Und zwar bei dem SSMA_TimeStamp. Da muß er irgend was mit dem Format nicht schlucken. Muss mal noch sehen wie ich den Typ der Spalte ändere, denke daran liegts.



---------------------------
DataGridView Default Error Dialog
---------------------------
The following exception occurred in the DataGridView:



System.ArgumentException: Parameter is not valid.

   at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)

   at System.Drawing.ImageConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)

   at System.Windows.Forms.Formatter.FormatObjectInternal(Object value, Type targetType, TypeConverter sourceConverter, TypeConverter targetConverter, String formatString, IFormatProvider formatInfo, Object formattedNullValue)

   at System.Windows.Forms.Formatter.FormatObject(Object value, Type targetType, TypeConverter sourceConverter, TypeConverter targetConverter, String formatString, IFormatProvider formatInfo, Object formattedNullValue, Object dataSourceNullValue)

   at System.Windows.Forms.DataGridViewCell.GetFormattedValue(Object value, Int32 rowIndex, DataGridViewCellStyle& cellStyle, TypeConverter valueTypeConverter, TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context)



To replace this default dialog please handle the DataError event.
---------------------------
OK   
---------------------------

Thema: Keine Properties bei Linq to EF vorhanden
Am im Forum: Datentechnologien

Nun funktionierts soweit, bekomme nun noch bei jedem Datensatz der angezeigt wird eine Fehlermeldung für die Spallte SSMA_Timestamp. Das mag er wohl nicht, warum? Hat da jemand schone eine Idee? Ich seh mal nach....

Thema: Keine Properties bei Linq to EF vorhanden
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL Express 2008>

Hi, kann mir jemand auf die Sprünge hellfen? Ich arbeite mich gerade in Linq to EF ein. Ich habe die Nordwind.mdb als EntityDataModel eingebunden, habe alle Tabellen angewählt und das System die Entitäten erzeugen lassen. Dann habe ic auf meiner Form einfach mal ein DataGridView platziert, ein Button dazu, um mal zu spielen. Nun möchte ich eine Abfrage erstellen:


 private void btn_Linq_Click(object sender, EventArgs e)
        {
           NordwindEntity nw = new NordwindEntity(Settings.Default.ConString);

            var test = from p in Artikel
                       where Artikel. ??
                       select p;


            dgv_test.DataSource = test;
        }


Ich bekomme bei Artikel. keine Properties angezeigt (Artikel ist eine Tabelle (Entität) bei der Nordwind-Datenbank). Warum? Ich sehe zwar, Artikel ist eingefärbt wie eine Klasse, aber kann das sein das ich von jeder Entität ers teine Instanz erstellen muss?

Was ist falsch?

Thema: Dataview in DataTable speichern und für weitere Abfrage verwenden
Am im Forum: Datentechnologien

Hi, es funktioniert seit längerem (aber immer noch ein Problem). Ich nutze eine Tabelle zum zwischenspeichern von Ergebnissen, die ich immer wieder in die Tabelle schreibe. Wenn ich nun eine weitere Menutabelle laden will, hole ich mir die benötigten Daten für die Auswahl der Datensätze aus der Tabelle mit dne zwischengespeicherten Daten. Das dauert alles sehr lang. Liegt daran, das ich das nicht alles komplett im DataSet abarbeiten kann (können schon,aber da funktioniert ja das JOIN nicht). Nun, wie kannn ich die Daten lokal im Cache vorhalten? Mit LinQ? Evtl. ists dort auch besser mit der Verknüpfun der Tabellen (Join) ? Hat jemand einen IDee?

Thema: Dataview in DataTable speichern und für weitere Abfrage verwenden
Am im Forum: Datentechnologien

Hallo, das Problem ist halt, das ich nicht nur in der Tabelle dann irgendwelche Daten filtern möchte, sondern die Tabelle mit einer anderen aus meinem DataSet Verjoinen möchte. Was ist die Lösung? Eine temporäre Tabelle in SQL erstellen? Dann muß ich aber wieder genau die STruktur kennen. WEnn es möglich wäre wie in Access, da kann man ja einfach aus einer Abfrage die Datensätze in eine Tabelle lenken. hat noch jemand eine Idee?

Thema: Dataview in DataTable speichern und für weitere Abfrage verwenden
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL2008Express>
Hallo, ich habe Daten in einer DataView ausgegeben. Dann übertrage ich die Daten aus der DataView in eine DataTable.


 /// Daten zuvor aus der DV sichern
                    _tempTabelle = _dv.ToTable();

Jetzt möchte ich die DataTable in eine weitere Abfrage einbinden


_sqladap.SelectCommand.CommandText = "SELECT * FROM Kopf JOIN _temptabelle  ON Kopf.Dateiname = _temptabelle.Bezeichnung";

Tabeladapter füllen


_sqladap.Fill(_ds, _tempTabelle.ToString());

Da bringt mir aber der Compiler einen Fehler: ungültiger Objektname "_tempTabelle".

Ich denke ist auch klar weil die Tabelle im DataSet nicht existiert. Wie bekomme ich die da hinein? Oder ist der komplette Ansatz falsch?

Thema: "dynamisches INSERT" geht das? oder wie kann ich das sonst noch machen?
Am im Forum: Datentechnologien

Hallo, habe gerade noch im Forum danch gesucht. Das wird wohl nicht so funzen, mit dem aktualisieren per Code. Sieht so aus als müßte ich in untyp. DataSet verwenden.

Thema: "dynamisches INSERT" geht das? oder wie kann ich das sonst noch machen?
Am im Forum: Datentechnologien

Sorry, am besten die Tabellen rauskoieren und in Excel einfügen, dann passt die Formatierung.


Tabelle Maschinenliste: (hier werden weitere Maschinen manuell eingefügt)

ID MaschName Typ Druckluft Oel KVA Zentralv
1 WZ300x1 Rund 300 450 25 2
2 WZ300x2 Rund 300 450 25 1
3 WZ300x3 Rund 300 450 25 3
4 USx1 Dreh 100 120 10 1
5 MSKx1 Fraes 125 245 15 2


Nun die zweite Tabelle, in der die ganzen aktivierten Maschinen welche dann in der Übersicht angeklickt werden, abgespeichert werden und die VErbrauchswerte addiert und ebenfals in diese Tabelle in die VErbrauchsspalten eingefügt wird.

ID WZ300x1_Fruehschicht WZ300x1_Spaethschicht WZ300x1_Nachtschicht WZ300x2_Fruehschicht WZ300x2_Spaethschicht WZ300x2_Nachtschicht Datum SummeOelvebrauch SummeLuftverbrauch SummeKVA Zentralversorgungen
1 TRUE FALSE FALSE TRUE TRUE TRUE 30.06.2010 1350 900 75 7
2 FALSE TRUE FALSE FALSE FALSE FALSE 01.07.2010 450 300 25 2
3 FALSE FALSE FALSE TRUE FALSE FALSE 02.07.2010 450 300 25 1
4 FALSE FALSE TRUE FALSE FALSE FALSE 03.07.2010
5 FALSE FALSE FALSE FALSE TRUE FALSE 04.07.2010


Nun, so sieht der Aufbau Grundsätzlich aus. Nur habe ich im Moment 60 Maschinen und viel mehr Verbrauchswerte.
In der zweiten Tabelle wird also die Tagesüberischt für alle drei Schichten abgelegt, und die Verbruachswerte sowie die aktiven VErsorgungseinheiten abgelegt und berechnet.

Wird jetzt in der Maschinentabelle eine neue Maschine eingetragen, muß die zweite Tabelle automatisch erweitert werden (Spalten einfügen, was nun auch schon funktioniert). Nun muß ich noch das typ. DataSet automatishc aktualisieren lassen, habe aber noch keine Ahnung wie ich das machen soll.

Thema: "dynamisches INSERT" geht das? oder wie kann ich das sonst noch machen?
Am im Forum: Datentechnologien

Werde eine erstellen und euch zeigen (heute mittag oder heute abend noch)
Gruß
oehrle

Thema: "dynamisches INSERT" geht das? oder wie kann ich das sonst noch machen?
Am im Forum: Datentechnologien

Hi, ich habe dich verstanden. Das ist auch korrekt mit der Datenkonsistenz. Aber ich denke in meinem Fall wäre das noch so OK. Es funktioniert nun auch, mit einer gespeicherten Prozedur eine neue Spalte mit Namen einzufügen. Nun habe ich aber noch ein anderes "dickes" Problem. Ich arbeite mit einem typ. DataSet. Das heißt auch, wenn ich in der Tabelle neue Spalten hinzufüge, sind die zwar drin, aber nicht im typ. DataSet. Da muß ich die erst wieder manuell anwählen und das DataSet neu generieren lassen. Gibts da die Möglichkeit, das automatisch generieren zu lassen?

Thema: "dynamisches INSERT" geht das? oder wie kann ich das sonst noch machen?
Am im Forum: Datentechnologien

Zitat von Mr. Bart Simpson
Ein (sehr einfacher) Ansatz ist z.B. schon mal, Deine Spalten von den eigentlichen Inhalten zu trennen - z.B. ungefähr so wie im angehängten Schema.gif. (Man beachte: Ich hab hier nur ca. 5 Minuten Zeit investiert - es geht definitv besser...)

Dann kannst Du (im Prinzip) beliebig viele Spalten in die (hier "Bezeichner" genannte) Referenztabelle eintragen und die eigentlichen Daten (in der "Werte"-Tabelle) nur noch darauf verweisen lassen.
Damit ist es z.B. sehr leicht möglich (man beachte die Anführungszeichen!) "über die Spalten zu aggregieren" (z.B. mit SUM oder AVG) indem Du nach der BezeichnerId gruppierst.

Bart Simpson


Also, ich hab eeine Tabelle, in der jede Maschine einen Datensatz abbildet. In diesem Datensatz sind auch dann Verbrauchswerte usw. für jede Maschine eingetragen. Wenn ein Wochenpaln erstellt wird, wird für jeden Tag und jede Schicht diese aktuelle Maschinenliste geöffnet, jede Maschine mit ihrem Namen aus Datenreihe (Spalte) ausgelesen und dynamisch eine Checkbox mit dem Namen und DataBinding zur CheckBox mit der BindingSource erzeugt. Nun wählt man in einem Kalender den Wochentag aus, markiert alle Maschinen die an dem Tag arbeiten sollen (das Datum wird überprüft, damit kein identischer Tag 2x angelegt werden kann). Dann wird der Datensatz in der Tabelle Maschinenschicht abgelegt. Das sind 60 Maschinen, * 3 Schichten macht dann 180 Spalten. Kommt nun eine Maschine hinzu, dann sind das gleich drei Spalten eil wir drei Schichten pro tag haben. Nun, ic würde die Tabelle dann gern eaus dem COde heraus erweitern und den Spalten die Namen der maschinen mit den SChichthürzel geben.

Thema: "dynamisches INSERT" geht das? oder wie kann ich das sonst noch machen?
Am im Forum: Datentechnologien

Hallo Bart, dann geb mir noch einen Tipp bevor ich falsch ansetze.

Thema: "dynamisches INSERT" geht das? oder wie kann ich das sonst noch machen?
Am im Forum: Datentechnologien

Zitat von zero
Zitat
Die Attribute können allerdings auch mehr werden. ... Brauch ich eine Dynamische Tabelle, die nach dem auslesen des XML-Files checkt, ob sich die Anzahl der Spalten verändert hat.
Wenn du meinst, ob du die Tabelle in der Datenbank dynamisch anpassen kannst: Ja, jedes halbwegs vernünftige RDBMS kennt die DDL-Syntax "ALTER TABLE". Alternativ kannst du auch neue Tabellen anlegen, die diese zusätzlichen Daten aufnehmen. (Nach dem Sinn frage ich besser nicht, denn damit zwingst du, entsprechende Dynamik vorausgesetzt, jeden SQL Server in die Knie.)
Besser wäre es hier, du wüsstest, wieviele Felder du maximal haben musst und würdest die Tabelle(n) statisch vordefinieren. Selbst wenn die Antwort lautet "Es ist unbestimmt, wieviele Felder meine Datensätze haben.", hast du damit schon eine klare Aussage getroffen, für die es optimale DB-Design-Patterns gibt. ... Aber das würde jetzt wohl zu weit führen, fürchte ich...

Wenn du meinst, ob du ein Statement dynamisch erzeugen kannst: Ja, auch das ist möglich. Vergewissere dich zunächst, dass die ausgelassenen Felder in der Datenbank NULL-Werte erlauben (oder sichere sie durch defaults ab).

the rough way
Anschließend erzeugst du ein Statement, das etwa so aussehen könnte


-- T-SQL Statement
-- Insert mit wahlfreien Attributwerten

INSERT INTO [Tabellenname]
(Wert1, Wert2, Wert3, ...) -- Hier alle Felder der Tabelle aufnehmen, für die "not NULL" definiert ist, oder denen Werte zugewiesen werden (müssen)
VALUES 
(oWert1.Value, oWert2.Value, oWert3.Value, ...) --- Hier alle Daten für einen Satz aufnehmen. Dabei gilt, dass Wert1 den oWert1.Value aufnimmt. Nicht vorhandene Werte mit NULL (oder Default-Werten) belegen.

the smart way
Wenn du mit SQL-Syntax nicht vertraut bist, geht das übrigens auch mit dem CommandBuilder (SqlCommandBuilder, OdbcCommandBuilder). Die machen das automatisch (zur Laufzeit und deshalb dynamisch an die eingelesenen Daten angepasst) für dich. Daher funktioniert der folgende Weg durchaus auch:
Zitat
Schön wärs, wenn ich das Dataset einfach nur auf die DB übertragen könnte. ... "dynamisches INSERT" ...
Geht auch.

1. XML-Daten in das Dataset einlesen.
2. Datatables um die "fehlenden" Spalten erweitern. (Optional, wenn die Datenbank/Tabelle es zulässt.)
3. DataAdapter erzeugen. (Connection, etc.)
4. Insert-Command am DA etablieren (vordefiniert oder dynamisch generiert)
5. DataSet tabellenweise oder en bloc über DataAdapter "updaten"


Jeder Weg hat Vor- und Nachteile: Der direkte Weg ist effektiver, performanter, sowie leichter zu skalieren und warten. Der smarte Weg ist einfacher und schneller geschrieben, dafür aber auch um Längen weniger performant. Welchen du wählen solltest, hängt von Anforderungen ab, die du hier nicht (ausreichend) dargestellt hast.

Hallo, ichhabe gerade das selbe Problem. Ich lese eine Tabelle mit Maschinen ein und stelle die jeweils in drei Panels da (jedes Panel für eine Schicht, Schichtarbeitsmodell).
Das pasiert also dynamisch. Nun kann es sein das morgen drei neue Maschinen gekauft werden. Ich trage diese Maschinen auch in die Liste ein. DIe Maschinen werden nun beim PRogrammstart automatisch in den Panels aufgelistet. Wenn ich nun die Maschinen für die Wochenübesicht einplane, habe ich das Problem das die drei neuen Maschinen nicht als Spalten in der Kalendertabelle, wo alle Maschinen in der Tagesübersicht aufgelistet sind nicht vorhanden sind. Ich müßte diese nun auch dynamisch der SQL-Tabelle zufügen. Im Dataset habe ich das schon gemacht, funktioniert dort auch.
Jetzt muß ich die neuen Spalten nur noch per Transact-SQL einfügen? Wie binde ich das in meinen Code ein? Habe das gerade mal versucht aber funzt nicht ??
(Verwende typ. DataSet).

Thema: Daten suchen in XML-File mit XElement ??
Am im Forum: Datentechnologien

Super CSL, deine Lösung funzt. Natürlich schreibe ich das Quatsch, aber in der ganzen Hilfe von MSDN findet man auch kein solches Beispiel. Anahnd solcher Lösungen findet man dann auch selber wieder weiter . Bin aber bisher auf keinen rünen Zweig gekommen, da kann man auch gerne mal resignieren. Danke dir für die Hilfe.

Thema: Daten suchen in XML-File mit XElement ??
Am im Forum: Datentechnologien

Nain daran liegts nicht. Dies war eine abgewandelte Form fürs Forum, da ist mir leider der Fehler passiert.

Thema: Daten suchen in XML-File mit XElement ??
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <MSSQLExpress 2008>

Hi, habe ein Problem mit LINQ und XElement. Ich möchte das nachfolgende File (habe es nachfolgende beigefügt) den Wert von <P02_01> auslesen. Kriegs aber nicht gebacken, da ich mit LINQ auch noch nicht so frisch bin. Kann mir da jemand Beistsand leisten?


<?xml version="1.0" encoding="utf-8"?>
<Parameterfile>
  <Parameterdaten>
    <Diameters Numberrange="1" />
    <AxialLength Numberrange="2">
      <P2_01>24.3</P2_01>
      <P2_02>20</P2_02>
    </AxialLength>
    <RadialLength Numberrange="3">
      <P3_01>23.5</P3_01>
      <P3_02>19.01</P3_02>
    </RadialLength>
    <AnglesDimensions Numberrange="4" />
</Parameterdaten>
</Parameterfile>

Hier meine Abfrage. Funktioniert leider nicht. Entweder ich muß die Abfrage noch weiter verschachteln oder ich bin zu blöd für LINQ. Irgendwie muß ich an den Wert des Elemtes <P02_01> kommen .Value muß das sein.

Eigentlich habe ich gedacht dass es mit XElement auch relativ einfach sein sollte, weil man damit auch sehr toll und einfach XML-Files erstellen kann.


 private void btn_XmlLaden3_Click(object sender, EventArgs e)
        {

            textBox2.Clear();
            textBox1.Clear();

            // XDocument xdoc = XDocument.Load(@"c:\testStruktur.xml");

            XElement root = XElement.Load(@"c:\testStruktur.xml");


            var test = from el in root.Descendants()
                       where el.Name.ToString() == "P02_01"
                       select el;


            textBox1.Text = (string) test.Value;        /// Wie bekomme ich mit LINQ den Wert von <P02_01> ?????


        }

Hat jemand den treffenden Tipp für mich?

Thema: Grafikprogrammierung mit DirectX oder OpenGL ???
Am im Forum: Grafik und Sound

Hallo gfoidl,

ich denke Drawing 3D ist erst mal genau das zum Einsteigen. Danke dir.

Thema: Grafikprogrammierung mit DirectX oder OpenGL ???
Am im Forum: Grafik und Sound

Habe ich irgendwelche Nachteile oder Vorteile gegenüber DirectX? Ich bin da eh ein Frischling. Evtl. gibts da auch etwas um andere Datenformate einzulesen (CAD-Daten oder so ...)

Es ist also mehr für den technischen Bereich gedacht.

Thema: Grafikprogrammierung mit DirectX oder OpenGL ???
Am im Forum: Grafik und Sound

Hallo, habe mir das mal angesehen. Also das VTK kann ich schlecht beurteilen, da man nicht allzuviel Doku dazu findet (auch so gut wie keine Beispiele). und XNA, ist das doch hauptsächlich für Spieleprogrammierung? Ich möchte mit drehenden Werkzeugen experimentieren, so mein Wunsch. Und das in 3D, aber ich denke das ist hammerhart.
Welche guten, kostengünstigen alternativen gibts noch für C# ?