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 mrennen
Thema: [GELÖST] DataTable aufsteigend durchlaufen
Am im Forum: GUI: Windows-Forms

Gelöst, trotzdem Danke an alle die sich bemüht haben

Thema: [GELÖST] DataTable aufsteigend durchlaufen
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

ich sehe aktuell den Wald vor Bäumen nicht und erhoffe mir einen Denkanstoß von euch.

In einem Ordner auf der HDD habe ich haufenweise Log-Dateien welche folgenderweise benannt sind:

25062017_0.txt, 25062017_1.txt, usw. (Tag, Monat, Jahr, _, Stunde)

Diese Namensliste importiere ich in ein DataTable:


            #region Init Table
            var _dtFiles = new DataTable();
            _dtFiles.TableName = "Files";

            var files = new DataColumn { ColumnName = "Value", DataType = typeof(Int32) };
            _dtFiles.Columns.Add(files);

            _dtFiles.PrimaryKey = new[] { files };
            #endregion

            var objDialog = new FolderBrowserDialog
            {
                Description = @"Folder",
                SelectedPath = @"D:\Temp"
            };

            var objResult = objDialog.ShowDialog(this);
            if (objResult != DialogResult.OK)
            {
                return;
            }

            _dtFiles.Clear();

            var folder = objDialog.SelectedPath;

            var dinfo = new DirectoryInfo(folder);
            var finfo = dinfo.GetFiles("*.txt");

            foreach (var file in finfo)
            {
                var row = _dtFiles.NewRow();

                var hour = file.Name.Substring(9, 2).Replace(".", "");
                if (hour.Length < 2)
                {
                    hour = string.Concat("0", hour);
                }

                row[0] = Convert.ToInt32(string.Concat(file.Name.Substring(4, 4), file.Name.Substring(2, 2), file.Name.Substring(0, 2), hour));

                _dtFiles.Rows.Add(row);
            }

            const string sortExpression = "Value";
            _dtFiles.DefaultView.Sort = sortExpression;

            dgvFiles.DataSource = _dtFiles;

Diese wird auch ordentlich dargestellt. Also den 26.06.2017 vor dem 27.06.2017 usw.

Jetzt möchte ich diese DataTable zeilenweise durchlaufen und je den Inhalt der gefundenen Datei in ein weiteres DataTable einlesen:


            foreach (DataRow dr in _dtFiles.Rows)
            {
                var date = string.Concat(dr[0].ToString().Substring(6, 2), dr[0].ToString().Substring(4, 2), dr[0].ToString().Substring(0, 4));
                var hour = Convert.ToInt32(dr[0].ToString().Replace(date, ""));

                var file = Path.Combine(teFolder.Text, string.Concat(date, "_", hour, ".txt"));

                if (File.Exists(file))
                {
                    using (var sr = new StreamReader(file, Encoding.Default))
                    {
                        while (!sr.EndOfStream)
                        {
                            var line = sr.ReadLine();

                            if (!line.Contains(@"TP"))
                            {
                                line = line.Replace(@"\r\n", Environment.NewLine);
                            }

                            var row = _dtLines.NewRow();
                            row[0] = line;

                            _dtLines.Rows.Add(line.Replace("Multicast:", "").Replace("xxxxxxxxxxxx", ""));
                        }
                    }
                }

                dgvLines.DataSource = _dtLines;
            }

Mein Problem ist nun dass im Ordner die erste Datei vom Namen her die 01012017... ist, nicht die 26062017... und das 2. Skript einfach nicht bei der 26062017... anfängt

Ich hoffe ihr könnt helfen - Danke

Thema: [ERLEDIGT] Datei über Hyperlink speichern und anderem Namen angeben
Am im Forum: Web-Technologien

Das war genau der richtige Hinweis. Thread ist somit erledigt :-)

Thema: [ERLEDIGT] Datei über Hyperlink speichern und anderem Namen angeben
Am im Forum: Web-Technologien

Hallo zusammen,

ich habe da ein weiteres Anliegen und hoffe ihr könnt mir den richtigen Denkanstoß geben.

Auf einer Webform habe ich einen Hyperlink welcher auf hinterlegte Dateien verweist. Diese haben z.B. folgenden Namen: xyz123.pdf sollen jedoch z.B. als Test.pdf gespeichert werden.

Wie stelle ich das an dass der Benutzer welcher den Hyperlink betätigt das xyz123.pdf nicht zu sehen bekommt?

Gruß und Danke

Michael

Thema: [Erledigt] - Werte einer fokusierten Zelle ermitteln
Am im Forum: Web-Technologien

Hallo zusammen,

ich arbeite aktuell an meinem ersten Webprojekt und bin aktuell an einem Punkt angekommen wo ich nicht weiter komme und eure Hilfe erbitte.

Im folgenden habe ich das ASPxGrid und die Datenfüllung abgebildet. Das alles funktioniert auch sehr gut.

Was mir fehlt: Wenn ein Benutzer eine Zeile im Grid anklickt (oder per Pfeil-Up/Down) wählt oder ändert, so würde ich gerne den Wert z.B. des Feldes description auslesen und in als ASPxLabel Wert anzeigen. Ich komme da einfach nicht weiter, also vielen Dank schon einmal für eure Mühen.

frmWeb.aspx:

<dx:ASPxGridView ID="grv" runat="server" Theme="DevEx" Width="270px" OnDataBinding="grv_DataBinding" KeyboardSupport="True">
<SettingsPager NumericButtonCount="4" PageSize="18" AlwaysShowPager="True">
<Summary AllPagesText="" Position="Inside" Text="" />
</SettingsPager>
<Settings HorizontalScrollBarMode="Visible" GridLines="Horizontal" VerticalScrollBarMode="Visible" VerticalScrollableHeight="420" />
<SettingsBehavior AllowFocusedRow="True" />
<SettingsDataSecurity AllowDelete="False" AllowEdit="False" AllowInsert="False" />
<SettingsSearchPanel Visible="True" />
<Columns>
<dx:GridViewDataTextColumn FieldName="key" ReadOnly="True" VisibleIndex="1"><EditFormSettings Visible="False" /></dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="description" VisibleIndex="2" Width="250"></dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>

frmWeb.aspx.cs:

protected void grv_DataBinding(object sender, EventArgs e)
{
    var dt = Session["Files"] as DataTable;
    if (dt == null)
    {
        for (var i = 0; i < 100000; i++)
        {
            dt.Rows.Add(i, "row" + i);
        }

        Session["Files"] = dt;
    }

    grv.KeyFieldName = @"fil_key";

    grv.DataSource = dt;
}

Thema: XML Dateien durchsuchen nach spezifischen Bezeichnungen und Werten
Am im Forum: Grundlagen von C#

Hallo zusammen,

ich habe da ein Problem mit dem Einlesen einer XML in ein DataTable. Hier ein Beispiel der XML Datei:


<Cobalt>
    <Asset AssetType="APPAREL" InternalID="1">
        <type_metadata>
            <FIELD name="name">1602102000133773.mpg</FIELD>
            <FIELD name="date">2016-08-08</FIELD>
        </type_metadata>
        <custom_metadata>
            <FIELD name="date_in">2016-02-10 20:00:00</FIELD>
            <FIELD name="date_out">2016-02-10 20:10:00</FIELD>
            <FIELD name="product_number">123456</FIELD>
            <FIELD name="comment"/>
            <FIELD name="product_description">Test 1</FIELD>
        </custom_metadata>
    </Asset>
    <Asset AssetType="APPAREL" InternalID="2">
        <type_metadata>
            <FIELD name="name">1602102000133781.mpg</FIELD>
            <FIELD name="date">2016-08-08</FIELD>
        </type_metadata>
        <custom_metadata>
            <FIELD name="date_in">2016-02-10 20:10:01</FIELD>
            <FIELD name="date_out">2016-02-10 20:20:00</FIELD>
            <FIELD name="product_number">123457</FIELD>
            <FIELD name="comment"/>
            <FIELD name="product_description">Test 2</FIELD>
        </custom_metadata>
    </Asset>
    <Asset AssetType="APPAREL" InternalID="3">
        <type_metadata>
            <FIELD name="name">1602102000133800.mpg</FIELD>
            <FIELD name="date">2016-08-08</FIELD>
        </type_metadata>
        <custom_metadata>
            <FIELD name="date_in">2016-02-10 20:20:01</FIELD>
            <FIELD name="date_out">2016-02-10 20:30:00</FIELD>
            <FIELD name="product_number">123458</FIELD>
            <FIELD name="comment"/>
            <FIELD name="product_description">Test 3</FIELD>
        </custom_metadata>
    </Asset>
</Cobalt>

Es sind 3 Zeilen welche zu verarbeiten sind, z.B. FIELD name="date_in" ist die Bezeichnung, während 2016-02-10 20:00:00 der entsprechende Wert ist.

Kann mir bitte jemand einen Denkanstoß geben?

Danke und Gruß

Michael

Thema: SQL Datum ausgeben (MSSQL)
Am im Forum: Datentechnologien

SELECT [position]
      ,CONVERT(VARCHAR(8), GETDATE(), 112) 
      ,[Archiv]
 FROM [datenbankname].[dbo].[tabelle]

Das liest sich aber aus den bisherigen Antworten ...

Versuch mal:

SELECT CONVERT(VARCHAR(8), GETDATE(), 112) 

Das bringt nur das Datum, aber ich verstehe nicht warum du das aktuelle SQL Datum unter C# abfragst - das kannst du doch auch, schneller, unter C# mittels DateTime.Now :-)

Thema: Using nutzen oder nicht (Performance) [==> kein Unterschied]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ich könnte mir vorstellen dass z.B.

using System;

die komplette dll in den Speicher läd auch wenn ich nur Teile brauche.

Das ist eigentlich der ganze Sinn meiner Frage :)

Thema: Using nutzen oder nicht (Performance) [==> kein Unterschied]
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

ich habe da mal eine Frage nach der Performance bzgl. Using nutzen oder nicht.

Hat das mal jemand getestet was besser ist bzgl. Geschwindigkeit und Speicherauslastung?

zum Beispiel:


namespace Test
{
    public partial class frmMemo : System.Windows.Forms.Form
    {
        public frmMemo(string table, string memo)
        {
            InitializeComponent();

            Text = string.Concat(Localize.TranslateToString(Name, table), " - ", Localize.TranslateToString(Name, "Memo Preview"));
            teMemo.MhtText = memo;
        }
    }
}

vs.


using System.Windows.Forms;

namespace Test
{
    public partial class frmMemo : Form
    {
        public frmMemo(string table, string memo)
        {
            InitializeComponent();

            Text = string.Concat(Localize.TranslateToString(Name, table), " - ", Localize.TranslateToString(Name, "Memo Preview"));
            teMemo.MhtText = memo;
        }
    }
}

Thema: WinForms: Text einer Textbox zuweisen
Am im Forum: Grundlagen von C#

textBox.Text = "NamedesTextes"; 

Das reicht völlig. Das += hängt beim nächsten Drücken des Buttons den Text an (Wie

 textBox.Text = TextBox.Text + "NamedesTextes";
)

Also 1x klicken ergibt dann

NamedesTextes

2x klicken ergibt dann

NamedesTextesNamedesTextes

usw.

Thema: LEFT OUTER JOIN funktioniert nicht !!!
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <Oracle>

Hallo zusammen

ich habe ein komisches Verhalten bei einer Abfrage

SELECT COUNT(*) FROM table1; = 38000 Datensätze
SELECT * FROM table1; = 38000 Datensätze

SELECT COUNT(*) FROM table2; = 131461 Datensätze
SELECT * FROM table2; = 131461 Datensätze

Jetzt der Fehler:

SELECT COUNT(*) FROM table1 a
LEFT OUTER JOIN table2 b ON b.ID = a.ID; = 38819 Datensätze

Soweit ich das gelernt habe wird alles aus der linken Tabelle angezeigt und falls in der rechten etwas vorhanden ist, wird das angezeigt.

Kann mir da jemand auf die Sprünge helfen? Insgesamt sind es 5 Tabellen die aufeinander verweisen. Wichtig ist dass nur die Anzahl der ersten Tabelle stimmt.

Thema: [gelöst] UserControl als MDIClient verwenden
Am im Forum: GUI: Windows-Forms

[gelöst] Manchmal sieht man den Wald vor Bäumen nicht :-)


            Form f = new Form();
            Control c = new UCtrl();
            c.Dock = DockStyle.Fill;
            f.Controls.Add(c);
            f.MdiParent = this.MdiParent;
            f.Show();



Hallo zusammen,

ich habe folgendes Problem:

Bei einer bestehenden Applikation besteht die Navigation aus einer Windows 8 UI (Tiles) Struktur.

Jetzt ist es gewünscht dass zusätzlich die Möglichkeit besteht eine alternative Darstellung bei Applikation Start zu wählen. Gewünscht ist hier MDI.

Alle bisherigen Oberflächen liegen auf UserControls und ich möchte diese ungerne duplizieren und die Duplikate zu Forms machen da ich dann doppelten Wartungsaufwand im Fall von Änderungen habe.

Kann mir jemand einen Tipp geben wie ich aus einem MDI Child Form ein UserControl als MDI Child aufrufen kann?

Form (funktioniert):

var frm = new Frm { MdiParent = this.MdiParent };
frm.Show();

UserControl (funktioniert nicht):

var uCtrl = new UCtrl { MdiParent = this.MdiParent };
uCtrl.Show();

Danke

Thema: [erledigt] Speichern in SQLCE Tabelle funktioniert nicht
Am im Forum: Datentechnologien

ich habe es gefunden - danke für die Hilfe

man sollte am Wochenende ruhen, nicht arbeiten :-)

Thema: [erledigt] Speichern in SQLCE Tabelle funktioniert nicht
Am im Forum: Datentechnologien

stimmt *vor den Kopf hau*

Wie kann ich das unterbinden dass die lokale DB jedes Mal beim Ausführen der Applikation neu erstellt wird ?

Danke

Thema: [erledigt] Speichern in SQLCE Tabelle funktioniert nicht
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: SQLCE

Hallo zusammen,

ich habe ein neues kleines Projekt begonnen und möchte gerne SQLCE als Datenbank verwenden.

Offenbar wird auch ordentlich gespeichert da ich nach dem Speichern eine Aktualisierung mache und dann sind die eingegebenen Daten da.

Nach Beenden und Neustart der Anwendung sind die Daten aber weg und ich finde den Grund einfach nicht :-(

So als ob ein Commit fehlen würde - kann das sein?

Ich habe die Anwendung online gestellt (Visual Studio 2012) und hoffe auf Hilfe.

http://www.mapmessenger.net/app.zip

Danke für eure Mühe

Thema: LookUpEdit Controls dynamisch erzeugen ...
Am im Forum: GUI: Windows-Forms

OK dann versuche ich es mal :-)

Ich habe eine Tabelle "Personen" welche neben den Spalten Nummer, Name noch einige andere Spalten hat.

Im Laufe der Entwicklung kommen die Benutzer jedoch immer wieder mit z.B. "Wir brauchen da noch eine Spalte Augenfarbe, Haarfarbe, usw.

Dadurch wurde die Tabelle immer größer und ich musste bei jedem Einfall a) an die Tabelle und b) an einige UserControls dran um diese zu erweitern.

Da diese mit jedem Mal unübersichtlicher wurden und die neuen Spalten (Felder) meist nur von wenigen Personen (Einträgen) gebraucht wurden habe ich mir die neue Struktur ausgedacht:

Neue Spalten werden nicht mehr in der Datenbank als feste Spalte hinterlegt sondern in einer Tabelle "Kategorien" als Datensatz.

Somit kann einer Person, sofern diese überhaupt die Farbe seiner Augen angegeben hat (Beispiel) der Datensatz Augenfarbe zugeordnet werden und der Wert dazu auch.

Das passiert im Bild (Hintergrund)

Es kann nun also sein dass 5 Personen den Datensatz "Augenfarbe" zugeordnet haben und je mit Werten (blau, grün, usw.) gefüllt haben.

In einem weiteren UserControl möchte ich nun nach Personen z.B. anhand der Augenfarbe suchen. Da diese Suchkriterien in Wirklichkeit ja nur noch Datensätze inkl. Verknüpfung an die Personen sind, kann ich keine festen Controls bei der Suche nehmen.

Aus diesem Grund fülle ich ein DataTable mit den Bezeichnungen aller von Personen verwendeten Kategorien und möchte je Bezeichnung ein DevExpress-LookUpEdit angezeigt bekommen. Zusätzlich möchte ich eine Füllung der LookUpEdit Controls mit den jeweiligen Werten (z.B. Augenfarbe: blau, grün, usw.)

Auf dem Bild (Vordergrund) sieht man schon was passiert (die Controls werden zugefügt - nur die Füllung fehlt)

Ich hoffe das ist nun "nicht" technisch genug und ich habe es deutlich beschrieben

Danke

Thema: LookUpEdit Controls dynamisch erzeugen ...
Am im Forum: GUI: Windows-Forms

Ich habe eine SQL Tabelle Personen wo den Usern aktuell permanent einfällt neue Spalten wären notwendig (Augenfarbe, Haarfarbe, Länge, usw.)

Fast täglich war das der Fall so dass ich eine Tabelle Kategorien eingeführt habe.

Dort werden nun die von den Usern geforderten "Spalten" als Datensatz gefüllt und angegeben ob String, Numeric oder Boolean Typ zugeordnet wird.

So kann pro Person je die verwendeten Kategorien zugeordnet werden (immer nur ein paar)

Diese Kategorien sollen nun in eine Suchmaske als LookUpEdit und mit den gespeicherten Daten gefüllt werden (Augenfarbe: blau, braun, grün, usw.)

Thema: LookUpEdit Controls dynamisch erzeugen ...
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

ich fülle aus einer SQL Tabelle eine DataTable welche ich dann mittels for (Int32 i ....) durchlaufe und dynamisch LookUpEdit's auf einem TabControl erzeuge und positioniere.

Das funktioniert mit dem folgenden Quellcode ganz gut:


var _cat_type0 = DataAccess.s_categories(true, "a.cat_type = 0", null);

                for (var i = 0; i < _cat_type0.Rows.Count; i++)
                {
                    var _te_f = new LookUpEdit();
                    _te_f.EditValueChanged += new System.EventHandler(lookupedit_Changed);
                    _te_f.Location = new Point(120, i * 30 + 40);
                    _te_f.Size = new Size(200, 20);
                    xscScrollSearch2.Controls.Add(_te_f);

                    var _te_t = new LookUpEdit();
                    _te_t.Location = new Point(330, i * 30 + 40);
                    _te_t.Size = new Size(200, 20);
                    _te_t.Properties.DataSource = null;
                    xscScrollSearch2.Controls.Add(_te_t);
                }

Somit werden für jeden Eintrag im DataTable 2 LookUpEdit's generiert (von/bis)

Mein Problem ist nun dass ich jedem LookUpEdit auch Werte zuordnen möchte und diese sich je Durchlauf unterscheiden müssen.

Irgendwo stehe ich da auf dem Schlauch und hoffe ihr könnt mir weiterhelfen

Danke

Thema: Zeilen zwischen 2 DataTables hin und her verschieben via Buttons
Am im Forum: Datentechnologien

Hallo zusammen,

ich habe eine Denkblockade und hoffe jemand kann mir helfen diese zu lösen ...

Folgendes Problem:

Ich habe 2 DataTable und würde gerne die Einträge von a nach b und umgekehrt verschieben (via Button).

Das kopieren der Einträge in die jeweilige Ziel-DataTable funktioniert, jedoch bekomme ich beim Löschen immer folgende Fehlermeldung:

Die angegebene DataRow befindet sich nicht in der aktuellen DataRowCollection.

Hier also einmal der Quellcode und ein Screenshot vom entsprechenden Programmbereich:


private void btnAddFiles_Click(Object sender, EventArgs e)
        {
            DataTable dt = GridHelper.GetTableOfSelectedRows(gridView);
            foreach (DataRow dr in dt.Rows)
            {
                var row = _rFiles.NewRow();
                row.ItemArray = dr.ItemArray;
                _rFiles.Rows.Add(row);

                _lFiles.Rows.Remove(row); // Hier kommt die Exception
            }
        }

Ich hoffe jemand hat einen Hinweis für mich

Danke

Thema: Programm in cmd inkl. Parametern ausführen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

ich habe mir eine MessageBox anzeigen lassen was der da versucht (siehe Dateianhang)

Ich bin den Pfad auch mal durchgegangen - die Dateien liegen wirklich an dem jeweiligen Ort :-(

Thema: Programm in cmd inkl. Parametern ausführen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,

da ich es leid bin immer von Hand osm.pbf Dateien über die cmd zu entpacken habe ich mir ein kleines Programm geschrieben bei welchem ich nun hänge.

Normalerweise starte ich eine cmd und tippe z.B. ein:

c:\osm\osmconvert.exe germany-latest.osm.pbf > germany.osm <ENTER>

das läuft dann eine ganze Zeit - je nach Dateigröße und ich habe die "entpackte" Datei germany.osm im gleichen Ordner liegen.

Unter C# habe ich mir nun einen kleinen Button zur Ordnerauswahl + Auflistung aller Dateien im gewählten Ordner in ein DataTable gebastelt. Das ganze dann noch schön in ein DataGridView und die Dateigröße vorher und den Zieldateinamen ermittelt - Schön siehts aus ...


            var dlg = new FolderBrowserDialog();

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                teOrdnerwahl.Text = dlg.SelectedPath;
                
                Fuellen();

                btnStart.Enabled = true;
            }

            DirectoryInfo ParentDirectory = new DirectoryInfo(teOrdnerwahl.Text);

            DataColumn col1 = dt.Columns.Add("Quelldatei", typeof(String));
            DataColumn col2 = dt.Columns.Add("Quelldatei in byte", typeof(Int64));
            DataColumn col3 = dt.Columns.Add("Zieldatei", typeof(String));
            DataColumn col4 = dt.Columns.Add("Zieldatei in byte", typeof(Int64));

            foreach (FileInfo f in ParentDirectory.GetFiles())
            {
                dt.Rows.Add(String.Format(@"{0}\{1}", teOrdnerwahl.Text, f.Name), f.Length, 
                    String.Format(@"{0}\{1}", teOrdnerwahl.Text, f.Name.Substring(0, f.Name.Length - 4).Replace("-latest", "")));
            }

            dgv.DataSource = dt;
            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

Jetzt zu meinem Problem:

Ein Klick auf den Button Start soll das DataTable durchlaufen und jede Datei automatisch "entpacken" so wie ich es manuell gemacht habe. Der folgende Quelltext funktioniert leider nicht, bringt aber auch keine Fehlermeldung (Wildes Blinken verschiedener cmd-Fenster durch auf- und zuklappen - das wars)


        private void btnStart_Click(object sender, EventArgs e)
        {
            String programm = String.Format(@"{0}\{1}", teOrdnerwahl.Text ,"osmconvert.exe");
            String parameter = String.Empty;

            for (Int32 i = 0; i < dgv.RowCount; i++)
            {
                dgv.Rows[i].DefaultCellStyle.BackColor = Color.Gray;

                parameter = String.Format(@"{0} >{1}", dt.Rows[i][0], dt.Rows[i][2]);

                Process.Start("cmd.exe", String.Format(@"/c {0} {1}", programm, parameter).Replace("\\", @"\"));
            }
        }

Was mache ich hier falsch???

Thema: DataTable an MSSQL übergeben
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MSSQL 2008 R2

Hallo zusammen,

in aktuellen Programmen von meiner Umgebung existiert die Möglichkeit sich über Mehrfachselektierung in Grids abhängige Daten in einem anderen Grid anzeigen zu lassen.

Hierfür nutze ich aktuell folgenden Code:


                var exp = "app";
                var where = new StringBuilder();

                if (gvData.SelectedRowsCount != 0)
                {
                    where.AppendFormat("{0}l_guid IN (", exp);

                    Parallel.ForEach(gvData.GetSelectedRows(), row => @where.AppendFormat("'{0}', ", GuidHelper.VerifyGuid(gvData.GetRowCellValue(row, gvData.Columns[String.Format("{0}_guid", exp)]))));

                    where.Remove(where.Length - 2, 2);
                    where.Append(")");

Hierbei wird ein String zusammengesetzt welchen ich als Parameter an MSSQL übergebe was auch sehr gut funktioniert.

Leider kommt es ab einer bestimmten Länge von gewählten Datensätzen zu einem Fehler da der erstellte String einfach zu lang wird.

Jetzt habe ich den Ansatz stattdessen ein DataTable mit den Werten zu generieren und dieses direkt an den SQL Server (eine PROCEDURE) zu übergeben.

Also folgende PROCEDURE zu erstellen:

CREATE PROCEDURE [dbo].[appl_log]
AS 
BEGIN
DECLARE @app_table TABLE 
(
	g UNIQUEIDENTIFIER NOT NULL
)

SELECT * FROM [appl_log] WHERE appl_guid IN (SELECT g FROM @app_table)
END

Folgende Fragen habe ich nun:

- Wie rufe ich die PROCEDURE von C# auf (Rückgabewert DataTable) ?
- Ist meine SELECT Anweisung richtig ?

Thema: XPInstantFeedbackSource Anzahl Datensätze
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MSSQL

Hallo zusammen,

ich stehe aktuell vor einem Problem bei dem ich echt nicht weiterkomme.

Ich fülle XtraGrids über XPInstantFeedbackSource (DevExpress) - das funktioniert sehr gut und vor allem extrem schnell da ja dynamisch nachgeladen wird und die Daten sofort zur Verfügung stehen, egal wieviele es sind (zumindest erscheint es dem Benutzer so).

Innerhalb des XtraGrids gibt es unten einen Navigator welcher den gewählten Datensatz und die maximale Anzahl Datensätze des Grids anzeigt.

Eben jenen maximalen Wert benötige ich um in Abhängigkeit Buttons ein- bzw. auszublenden. DataRowCount bringt mich nicht weiter da XPInstantFeedbackSource u.U. noch nachläd und den Wert direkt zu Beginn noch gar nicht hat.

Von daher wüsste ich nur den Weg über den Navigator - der hat seinen Wert ja sofort zu Beginn. Weiß jemand wie ich den auslesen kann - die Hilfe bringt mich nicht weiter ?

Danke und Gruß

Michael

Thema: Etiketten drucken - manuelle Positionswahl ...
Am im Forum: Rund um die Programmierung

Hallo zusammen,

ich habe da ein Problem bei welchem ich nicht einmal weiss wie ich anfangen soll :-(

Folgendes ist gewünscht:

ich habe eine SQL Tabelle welche unterschiedliche Spalten beinhaltet. 3 dieser Spalten sollen auf Etikettenbögen gedruckt werden.

Diese 3 Spalten sollen in einem Grid angezeigt werden - soweit kein Problem...

Rechts neben dem Grid soll eine Vorschau einer Etikettenvorlage (3 Spalten, 10 Zeilen) angezeigt werden und die Daten aus dem Grid sollen via Maus Drag'n Drop in die jeweiligen Felder geschoben werden.

Hintergrund hierbei ist dass es Etikettenbögen gibt welche nur teilweise benutzt wurden (also fehlen u.U. auch mal mittig bedruckbare Bereiche). Diese sollen weiter verwendet werden können.

Hat jemand so etwas schon einmal gemacht ?

Thema: Im DataGrid Einträge verstecken
Am im Forum: GUI: WPF und XAML

Hallo,

folgendes sollte funktionieren:

dataGrid.Columns[0].Visibility=Visibility.Hidden;

Gruß

Michael

Thema: [erledigt] CheckEdit in XtraGridView - SQL Bit geht verloren
Am im Forum: GUI: Windows-Forms

ich habe die Lösung gefunden und poste diese hier für jeden welcher sich dafür interessiert

Innerhalb des letzten Quellcodesnippets folgende Anpassungen machen:


public static void ChangeGridViewLayout (ref GridView gridV, String form)
        {
            foreach (GridColumn col in gridV.Columns)
            {
                if (col.ColumnType.FullName == "System.UInt64")
                {
                    var column = new RepositoryItemCheckEdit { NullText = "", ValueGrayed = "-" };
                    col.ColumnEdit = column;

                    // UInt64 steht hier für das MySQL Pendant bit(1)
                    column.ValueChecked = Convert.ChangeType(1, typeof(UInt64));
                    column.ValueUnchecked = Convert.ChangeType(0, typeof(UInt64));
                }
            }
        }

Thema: [erledigt] CheckEdit in XtraGridView - SQL Bit geht verloren
Am im Forum: GUI: Windows-Forms

Teilweise gelöst, jedoch fehlt noch etwas :-(

Ich habe etliche Forms welche sich je eines XtraGridViews bedienen. Diese werden über DataSets wie folgt befüllt:


        public static DataSet GetData()
        {
            var sql = new StringBuilder();
            sql.Append("SELECT * FROM tabelle ORDER BY feld; ");

            var _params = new ParamCollection();

            var q = new MySqlQuery(sql.ToString(), _params, false);
            return (DataSet)q.GetMySqlQueryResult();
        }

Nach Aufruf und Füllung innerhalb der Form über:


Grid.DataSource = SqlData.GetData().Tables[0];

durchlaufe ich mit:


ChangeGridViewLayout(Name, ref GridView);

das jeweilige XtraGridView um z.B. die Spaltennamen zu übersetzen.

Jetzt möchte ich im ChangeGridViewLayout auch feststellen ob ein Feld SQL-Bit (Boolean) ist und dieses entsprechend als CheckEdit Feld anzeigen zu lassen.


        public static void ChangeGridViewLayout (ref GridView gridV, String form)
        {
            foreach (GridColumn col in gridV.Columns)
            {
                if (col.ColumnType.FullName == "System.UInt64")
                {
                    var column = new RepositoryItemCheckEdit { NullText = "", ValueChecked = "true", ValueUnchecked = "false", ValueGrayed = "-" };
                    col.ColumnEdit = column;
                }
            }
        }

Das funktioniert auch in der Form dass die Spalten nun als CheckEdit Felder angezeigt werden, jedoch fehlen die Werte (true oder false)

Kann mir einer sagen warum der die Werte nicht übernimmt ?

Danke und Gruß

Michael

Thema: [erledigt] CheckedListBox und Maus-Scrolling
Am im Forum: GUI: Windows-Forms

Ich habe es nun anders gelöst und die User sind damit zufrieden :-)

Im MouseEnter-Event mache ich ein Object.Focus();

Mit dem Hinweis: Es wird eh nur gescrollt wenn ein Wert "weiter unten" gewählt werden soll ...

Danke für eure Mühen

Michael

Thema: [erledigt] CheckedListBox und Maus-Scrolling
Am im Forum: GUI: Windows-Forms

Hallo zusammen,

ich habe auf einer WinForm eine CheckedListBox mit etlichen Einträgen (reicht locker um die Scrollleisten zu sehen). Diese CheckedListBox soll Daten mit einem Mausklick "aktivieren" - Funktioniert auch einwandfrei.

Wie bekomme ich es nun hin dass ich nicht erst einen Datensatz markiere und wieder "demarkiere" um mittels Mausrad scrollen zu können.

Das geht irgendwie nur wenn das CheckedListBox-Control den Focus hat - nur dann ist halt schon eine Datensatz markiert :-(

Hat jemand eine Idee ?

Gruß und Thx

Michael

Thema: [erledigt] XML Ex- Import für Logdateien: Datei wird von anderem Prozess verwendet
Am im Forum: Datentechnologien

Erledigt - DANKE @gfoidl

Ich habe weiter experimentiert

mit importReader.Close(); funktioniert es nun :-)

Danke und Gruß aus Duisburg

Michael