Laden...
A
Benutzerbeschreibung

Forenbeiträge von andi_bln Ingesamt 25 Beiträge

02.11.2022 - 22:16 Uhr

Danke für Deine Antwort, habe das erst jetzt gesehen!!!!!!

Habe eine etwas andere Lösung gefunden, hole mir die Dateien einzeln aus dem ZIP :
(geht vor allen Dingen auch schneller 🙂)


public void GetFilesFromZip(string _myZip, string _pth)
        {
            using (ZipArchive ZIParchive = ZipFile.OpenRead(_myZip))
            {
                List<ZipArchiveEntry> _Za = new List<ZipArchiveEntry>();
                foreach (ZipArchiveEntry entry in ZIParchive.Entries)
                {
                    if (!string.IsNullOrEmpty(entry.Name)) _Za.Add(entry);
                   
                }
                _Za = _Za.Where(p => Path.GetExtension(p.Name.ToLower()) == ".dat").ToList();
                foreach (ZipArchiveEntry _Ztmp in _Za)
                   _Ztmp.ExtractToFile(Path.Combine(_pth,_Ztmp.Name), true);
            }
        }

02.11.2022 - 17:55 Uhr

Guten Abend,

bin komplett ratlos, beim Exrahieren einer Datei kommt permanent diese Fehlermeldung:

Fehlermeldung:
Durch Extrahieren des Zip-Eintrags würde eine Datei außerhalb des angegebenen Zielverzeichnisses erstellt

in der Beschreibung:

Fehlermeldung:
IOException
Der Name eines Eintrags im Archiv ist Empty, enthält nur Leerraum oder enthält mindestens ein ungültiges Zeichen.

  • oder - Extrahieren eines Eintrags aus dem Archiv würde Sie eine Datei erstellen, die sich außerhalb des Verzeichnisses befindet, das durch destinationDirectoryName angegeben ist. (Zum Beispiel geschähe dies möglicherweise, wenn der** Eintragsname Accessoren** des übergeordneten Verzeichnisses enthält.) - oder - Mehrere Einträge im Archiv haben denselben Namen.

Manuell kann ich das komischerweise im Explorer problemlos erledigen. Das Entpacken anderer Zipdateien ist im Programm ebenfalls problemlos möglich.
Hat irgendjemand eine Idee ? Genau auf diese Datei kommt es aber an ...

Bei Bedarf könnte ich die Zip- Datei zur Verfügung stellen, will sie aber hier nicht posten.

Andreas

15.03.2021 - 17:21 Uhr

wie so oft, kommt einem die Lösung beim Schreiben:


 TestListe = TestTable.AsEnumerable().Select(p => p.Field<string>(TestLayout.A.ToString())+ "-->" + p.Field<string>(TestLayout.B.ToString())).Distinct().OrderBy(p => p).ToList();

und habe genau das was ich brauche blitzschnell 😉

Vielen Dank nochmal
Viele Grüße aus dem Lockdown

15.03.2021 - 17:08 Uhr

Erstmal vielen Dank für Eure Rückantwort, ich habe vergessen zu sagen, dass ich aus einer riesigen Textdatei mit ziemlichen Aufwand einen DataTable erstelle, mir ist nichts blöderes eingefallen, das lässt sich vor allen Dingen auch mit einem DataGridview leicht darstellen.
War jetzt alles doof ausgedrückt.
In diesem DataTable lässt sich relativ leicht rechnen, dauert halt etwas.
Für diese Auswertung benötige ich nur die beiden Spalten, dort sollen nur die auftauchenden Messkanäle(A) mit den dazugehörigen Beschreibung(B) berechnet werden.
Letztendlich eine Auswahl für weitere Aktionen.
Das Mittel der Wahl ist für mich LINQ nur hier hänge ich ...

Viele Grüße
Andreas

15.03.2021 - 11:26 Uhr

Verwendetes DatenbanksysAcc
AccessDatenbank
tem: <VSTO2019>

Hallo,

ich bin in einem DataTable mit mehreren einhunderttausend Recordsets unterwegs.
Mich interessieren nur 2 Spalten ( Spalte A und Spalte B )

Eine distincted Liste der Spalte A ist nicht weiter schlimm mit :


List<string> DTest = TestTable.AsEnumerable().Select(p => p.Field<string>(Layout.Test.ColA.ToString())).[b]Distinct()[/b].OrderBy(p => p).ToList();

ich bräuchte


Dictionary<string,string> DicTest = TestTable.AsEnumerable().Select(....................).ToDictionary(x=>x.Key,x=>x.Value)

wobei Value im Dictionary den dazugehörigen Wert in Spalte B repräsentiert ( der ist immer eindeutig, für den Wert in ColA )
Meine Versuche dauerten immer zu lange ( >20s ). Gibt es irgendeinen Trick, wie man das in einer LINQ - Anweisung blitzschnell erledigen könnte ?

Vielen Dank für jeden Tip.

Viele Grüße

Andreas

16.04.2020 - 12:26 Uhr

Vielen Dank, auf das Einfache kommt man natürlich nicht.
Der Name des Enums entspricht dem Tablename in einer Datenbank, so kann ich aus einem Enum einen kompletten Table ableiten ..

Danke!

16.04.2020 - 07:34 Uhr

Guten Morgen,

eine, vielleicht blöde, Frage aber bekommt man irgenwie den Namen eines enums, in diesem Fall OpFac
raus, würde mir eine Konstantendeklaration sparen ...

  public enum [B]OpFac[/B]
        {
            [Description("AUTOINCREMENT")]  
            LfdNr = 0
            
        }

bleibt gesund !!

Andreas

27.11.2018 - 22:13 Uhr

Hallo,

ich weiss nicht mehr weiter, trotz vieler Beispiele bekomme ich immer eine Exception > Fehlermeldung:

"Befehl nicht verfügbar. . Code
Ich habe im Doc-Header einen Table. In der Zelle 1,4 soll die die Seitenangabe rein. z.B. 2 of 14
Rn-> Word.Range
hat jemand einen Rat?

Vielen Dank Andreas!!!



                object currentPage = WdFieldType.wdFieldPage;
                object totalPages = WdFieldType.wdFieldNumPages;
                object missing = Missing.Value;
                              

                Rn = _Table.Cell(1, 4).Range;
                try { Rn.Fields.Add(Rn, ref currentPage, ref missing, false); } catch (Exception e) { }
                Rn.InsertAfter(" of ");
                Rn.Collapse(WdCollapseDirection.wdCollapseEnd);
                try { _TotalPages = Rn.Fields.Add(Rn, ref totalPages, ref missing, false); } catch (Exception e) { }


24.07.2018 - 12:29 Uhr

So funktioniert es 😃

 OleDbParameter Opr = new OleDbParameter();
 Opr.ParameterName = RecordsFrom.ToString();
 Opr.OleDbType = OleDbType.DBDate;
 Opr.Direction = ParameterDirection.Input;
 Opr.Value = RecordsFrom;

Vielen Dank !!!!!!

24.07.2018 - 11:33 Uhr

Erst mal Danke,
auch mit Parametern funktioniert es nicht, muss mich eingehend damit beschäftigen.

Vielen dank !!

Andreas

23.07.2018 - 15:23 Uhr

verwendetes Datenbanksystem: <Access2010>

Hallo,
weiß nicht mehr weiter, "eigentlich" total simpel.
Es sollen die Daten eines Table ab einem bestimmten Datum geladen werden.
Die Spalte (CheckedAt) ist in der DB definitiv als DateTime festgelegt.

Übergabeparameter DateTime RecordsFrom.

In der Prozedur baue ich den SQL String :

SQLSt = "SELECT * FROM " + TableNm + " WHERE " + CheckColumn + " > @" + RecordsFrom;

heraus kommt das :

"SELECT * FROM TableName WHERE CheckedAt ≥ '23.04.2018 15:08:35'"

und Datentypenkonflikt in Kriterienausdruck, egal was ich hier treibe... 😦
Ohne Where Klausel geht alles nur ich lade unnütze Daten ....

Hat jemand eine Idee, wahrscheinlich ist es total einfach ..

Vielen Dank für Hilfe Andreas

13.02.2018 - 10:39 Uhr

AccessDatenbank ( Office 2010 )

Guten Morgen,
aufgrund der Größe des ZielTables in der Datenbank, will ich diesen nicht in ein Table mit Fill zurücklesen und die neuen Datensaetze dort einschreiben und die DB updaten.
Zeilenweises INSERT dauert zu lange, weil die DB sich auf einem Netzwerk befindet.
Ich finde im Netzt bis jetzt nichts Schlüssiges.

Die Struktur der Datensätze entspricht natürlich der Struktur der Datenbank.
Hat jemand einen Tip ?

Vielen Dank

Andreas

28.12.2017 - 12:38 Uhr

Hallo,

gibt es eine Möglichkeit den Namen des Enums zur Laufzeit raus zubekommen ( hier --> BeispielName)
Hintergrund, aus dem Enum generiere ich ein Layout für einen Table, so könnte ich mir den Namen des Tables als separate Konstante sparen.. Geht sowas ?

Vielen Dank für einen Tip

Andreas


      public enum BeispielName
      {
          [Description("AUTOINCREMENT*")]  
          LfdNr = 0,
          [Description("TEXT(50)")]
          Bsp1,
          [Description("TEXT(50)")]
          Bsp2l,
          [Description("TEXT(255)")]
          Bsp3,
          [Description("TEXT(255)")]
          Bsp4
      }

04.11.2016 - 13:24 Uhr

Genau das war es!!

Die ein schönes WE..

Viele Grüße
aus Berlin

Andreas

04.11.2016 - 12:36 Uhr

ja genau aus allen Member einen String basteln ...
Das übergebene Enum last sich einfach nicht in der Funktion bearbeiten..
Am besten 2 Listen Names und Descriptions ..

Habe einen totalen Blackout ..

Andreas

04.11.2016 - 10:40 Uhr

Naja, das Ziel ist es, ein komplettes Enum zu übergeben, dieses in einer Funktion auseinander zunehmen und aus den Werten ( Description, Values , Name ) einen speziellen String zusammen zu bauen.
Das Enum direkt zu bearbeiten, ist kein Problem aber das würde zu verzigfachen Vergrößerung des Codes führen...
Die Übergabe des jeweiligen Enums als Parameter in eine Funktion ist problemlos möglich, die Names auszulesen ebenfalls, komme aber (noch) nicht an die Descriptions ran ...

Andreas

04.11.2016 - 09:07 Uhr

Guten Morgen,

leider komme ich nicht weiter. Ich möchte an eine Funktion ein Enum uebergeben, in dieser soll daraus ein bestimmter String aus der Description und dem Wert + Namen berechnet werden.
Nun muss ich das Enum ganz normal durchenumerieren oder mit LINQ auswerten. Ich scheitere mit dem Enum in der Funktion.
Mit MyVals kome ich auch nicht weiter ....

z.B. foreach (Enum dsp in Enum.GetValues(typeof(MyEnum)))

Kann da jemand helfen ?

Andreas


 public enum DISP
        {
            [Description("TEXT1")]
            WT1 = 0,
            [Description("TEXT2")]
            WT2,
            [Description("TEXT3")]
            WT3,
         }   



public void Test1()
        {
          string tt=   = MTest(new DISP());
             
        }

        public static string MTest(Enum MyEnum)
        {
            string test;
            var MyVals = Enum.GetValues(MyEnum.GetType());
            /*
            foreach (Enum dsp in Enum.GetValues(typeof(MyEnum)))

            { 
            
            
            }
            */
            return string.Empty;
        }
21.07.2016 - 10:40 Uhr

Guten Morgen..

hier ist sie :

using (StreamReader Sr = new StreamReader(ExcelPth,Encoding.Default))
                        {.....

Andreas

21.07.2016 - 07:15 Uhr

Guten Morgen Gü,

ich lese die Dateien Wahlweise ein ( csv / Excel ) Excel direkt in ein Datatable, die csv mit dem Streamreader . Die Daten kommen z.B. °C in byte[0] = 176; bytes[1] = 67. Alles klar.
In der Ausgabedatei ( csv / Excel ) ist das maximal was ich darstellen kann, ein Fragezeichen ?C
Wie kann ich das Ausgabeformat so wählen, das ich die korrekte einheit bekomme ..?

Sehe den Wald vor Bäumen wahrscheinlich nicht mehr...

Andreas

20.07.2016 - 13:44 Uhr

Na ich habe nun alle 2 hoch 4 Codierunsvarianten durchprobiert ..
kriegs nicht hin 😦

Aber Danke erstmal

Andreas

20.07.2016 - 10:43 Uhr

Guten Morgen,

ich lese aus einer Text- oder Exceldatei folgende Zeichenfolge ein :

μs/cm

in der Entwicklungsumgebung sehe ich es "normal"

µs/cm

auch im Bytearray ist auch alles normal.

µs/cm

soll eigentlich in der Zielexcelmappe bzw. csv auftauchen, dort erscheint jedoch wieder

μs/cm

...
ich habe es diversen Konvertierungen versucht, ohne Erfolg z.B.

 byte[] bytes = Encoding.UTF8.GetBytes(_unit);
            return Encoding.ASCII.GetString(bytes);

komme nicht drauf ... kann jemand helfen ?

Vielen dank Andreas

09.06.2016 - 09:49 Uhr

verwendetes Datenbanksystem: <Dictionary>

Guten Morgen,

ich hänge leider etwas ..
ich möchte aus einem Dictionary<double,bool> mit LINQ eine neues Dictionary generieren.

z.B.

1564, True
8756,False
1, False
8907,87, True
301,2. False

alle KeyValuePairs, deren KEY zwischen 2 und 1800 liegen, sollen in ein neues Dictionary überführt werden. Ich habe das mit Schleifen gemacht, irgendwie bin ich nicht zufrieden damit.Ich würde das gern mit einer LINQ Anweisung machen... Dic.Where(......).Todictionary(v=>..)

Kann jemand helfen, ich will das auch verstehen ..

Vielen Dank für jeden Tip..

Andreasverwendetes Datenbanksystem: <bitte immer angeben>

12.04.2015 - 14:19 Uhr

Man bin ich beknackt, ich habe gar nicht geschaut, ich war felsenfest davon überzeugt das die Klasse Public , war ... entschuldigung 😮()()

Schönen Sonntag noch

Andreas

12.04.2015 - 11:09 Uhr

Hallo,

ich bekomme denoben genannte Fehler, kann aber nicht erkennen, wo dieses Problem liegt...
(Das Internet ist voll davon, aber ich sehe es nicht .. )

public partial class CreateML : Form
    {
        private DatenBank MDb;
       
        public CreateML(DatenBank Db)
        {
            MDb = Db;
            InitializeComponent();
        }

der Aufruf:

CreateML Cml = new CreateML(MDb);
            Cml.ShowDialog();

Diesen Fehler erhalte ich nur wenn ich die Klasse DB an eine Form übergebe, sonst klappt das, habe keinen Schimmer, was das sein kann, kann mir jemand helfen ?

Andreas