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);
}
}
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
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
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
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
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!
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
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) { }
So funktioniert es 😃
OleDbParameter Opr = new OleDbParameter();
Opr.ParameterName = RecordsFrom.ToString();
Opr.OleDbType = OleDbType.DBDate;
Opr.Direction = ParameterDirection.Input;
Opr.Value = RecordsFrom;
Vielen Dank !!!!!!
Erst mal Danke,
auch mit Parametern funktioniert es nicht, muss mich eingehend damit beschäftigen.
Vielen dank !!
Andreas