Laden...
M
Benutzerbeschreibung

Forenbeiträge von mkolb Ingesamt 52 Beiträge

12.04.2024 - 10:48 Uhr

habe den Fehler gefunden. Firewall war soweit korrekt, allerdings hatte ich die falsche EXE ausgewählt. Da war noch eine ältere Installation aus einer früheren Installation in der Firewallfreischaltung ausgewählt. Jetzt geht es wieder.

Danke für die Unterstützungen.

11.04.2024 - 18:19 Uhr

warum sollte es mit der EXE nicht gehen?

Es ging mit Windows10 + WindowsServer2019. Bei Windows11 + WindowsServer2022 wird das wohl blockiert.

Ich schaue mir Deinen Link aber mal näher an.

PS: Gibt es ggf. eine alternative Technik zu WCF?

11.04.2024 - 17:43 Uhr

auf Windows Server 2022:

Einstellungen → Kommunikation von Apps durch die Windows Defender Firewall zulassen

-> Zugelassene Apps und Features

-> meine Anwendung → Haken bei Domäne/Privat/Öffentlich

Auf dem Windows11-PC ebenfalls.

11.04.2024 - 14:55 Uhr

Hallo,

ich habe eine kleine Anwendung mit .net. Diese läuft auf einem Server und auf einem Client.

Auf dem Client ist ein kleines Tool, dass per WCF prüft, ob die Anwendung auf den verschiedenen Rechnern läuft. Das ging bisher ganz gut.
Seitdem ich von WindowsServer2019 auf WindowsServer2022 und Windows10 auf Windows11 gewechselt bin, geht das nicht mehr.

Ich habe die Firewall jeweils freigeschaltet, habe auch bei den ServerFeatures alle WCF-Dienste aktiviert.

Gibt es dazu weitere Einstellmöglichkeiten?

Tschau
Martin

06.11.2023 - 16:04 Uhr

habe es nun anders gelöst: Habe das SplitterControl rausgeschmissen und das "TableLayoutPanel" verwendet. Das scheint überall gut auszusehen. Muss ich mal länger durchtesten.

06.11.2023 - 15:28 Uhr

Hallo,

also, das hat keinen Einfluss:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
  <application>
    <!-- Windows 10 compatibility -->
    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
  </application>
</compatibility>

das aber schon, aber katastrophal, nicht brauchbar:

<configuration>
  <!-- ... other xml settings ... -->

  <System.Windows.Forms.ApplicationConfigurationSection>
    <add key="DpiAwareness" value="PerMonitorV2" />
  </System.Windows.Forms.ApplicationConfigurationSection>

</configuration>

Sehe aber, das scheint nicht das Listview zu sein, sondern habe darüber einen "Splitcontainer". Am Entwicklungs-PC sieht es mit 150 % gut aus, am Notebook mit 200% habe ich allerdings die Probleme.

Der Splittingscontainer ist gedacht, wenn kleine Bildschirme vorhanden sind, dass man auch noch etwas sieht. Ansonsten liebe ich es mit Anchor zu arbeiten, aber bei verschiedenen Tabellen untereinander und nebeneinander, ist das nicht mehr hilfreich.
Gäbe es andere Möglichkeiten ?

Tschau
Martin

06.11.2023 - 12:46 Uhr

Hallo,

ich habe auf einer Windows-Form mehrere Listviews. Diese passen sich bei normaler DPI-Zahl gut an.

Habe aber ein Notebook mit hoher DPI-Zahl und dann ist das Listview recht winzig. Habe darüber ein Panel und das Listview entsprechend Dock=Fill.

Habe Listview unter ein Panel und nur Anchor auf Top, Left, Right, Button gesetzt, trotzdem erhalte ich winzige Listviews.

Habe leider nichts konkretes bei der Google-Suche gefunden, nur Hinweise auf generelle Anpassungen, die auf die app.config hinweisen:

            <appSettings>
                <add key="EnableWindowsFormsHighDpiAutoResizing" value="true"/>
            </appSettings>

Hat jemand Tipps für mich ?

Tschau
Martin

02.10.2023 - 12:03 Uhr

Danke für die Links.

Habe den Wiederherstellungsmodus auf "Einfach" gestellt. Damit fällt das mit des Transaktionsprotokoll weg.

Das reicht mir.

Danke für die Hilfe und Hinweise.

Ich beobachte es weiter.

29.09.2023 - 10:56 Uhr

Backup-Datei ist ca. 10 GB groß

Die .ldf-Datei ist ca. 62 GB und die .mdf-Datei ca. 11 GB groß

29.09.2023 - 06:51 Uhr

Hallo,

meine SQL-Datenbank (SQL Server Version 14.0.2047) ist sehr groß.
Das Transaktionsprotokoll ist dort immer wieder voll.
Daher lasse ich nachts über die "Aufgabenplanung/Taskplaner" einen Job laufen.
Dabei wird die Datenbank gesichert und das Transaktionsprotokoll gespeichert und reduziert.
Dabei ist das Transaktionsprotokoll immer größer und größer  geworden, auch die exportierte Datei.
Jetzt bin ich hergegangen und habe den Namen der Transaktionsprotokolls-Datei mit einem Timestamp versehen,
damit immer eine neue Datei erzeugt wird.
Im Grunde geht es, aber die Datei wird täglich größer und größer und nach ca. 3-4 Tagen ist
das Transaktionsprotokoll wieder voll.
Dann lasse ich diesen v. g. Task im Aufgabenplanung/Taskplaner wieder neu laufen und
die exportierte Transaktionsprotokolls-Datei ist klein und alles wieder gut.

Das Transaktionsprotokoll soll aber immer kleiner werden. Was muss ich in meinem Script da noch anpassen ?

Betriebssystem: Windows Server 2019
Client:            Windows 10 und 11
DB:                SQL Server 2017 Express
.net:            Framework 4.8 (C# + VB)

Task im Aufgabenplanung/Taskplaner:
                SQLCMD -E -S SVxy\SQLExpress -i S:\Backup\SQL-Server\FIMAN-DB-Backup.sql
FIMAN-DB-Backup.sql:            

USE [FIMANSQL_SERVER3]
EXEC sp_helpdb FIMANSQL_Server3
-- sichern der DB
BACKUP DATABASE [FIMANSQL_SERVER3] TO  DISK = N'C:\SQL\BAK\FIMANSQL_Server3_auto.bak'  WITH NOFORMAT, INIT,  NAME = N'FIMANSQL_SERVER3-Vollständig Datenbank Sichern',  SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO
-- sicheren der Transaktionsdatei
Declare @filename3 as char(255)

Declare @datum as char(15)

Set @datum = (replace(str(DatePart(YYYY, GetDate()), 4), ' ', '0') +
replace(str(DatePart(MM, GetDate()), 2), ' ', '0') +
replace(str(DatePart(DD, GetDate()), 2), ' ', '0') + '_' +
replace(str(DatePart(hh, GetDate()), 2), ' ', '0') +
replace(str(DatePart(mi, GetDate()), 2), ' ', '0') +
replace(str(DatePart(s, GetDate()), 2), ' ', '0'))

Set @filename3 = 'D:\SQL\FIMANSQL_Server3_Transaktionsprotokoll'+@datum+'.trn'


-- BACKUP LOG [FIMANSQL_SERVER3] TO  DISK = N'C:\Daten2\SQL\FIMANSQL_Server3_Transaktionsprotokoll.trn' 
-- WITH NOFORMAT, NOINIT,  NAME = N'FIMANSQL_SERVER3-Transaktion Datenbank Sichern', 
-- SKIP, NOREWIND, NOUNLOAD,  STATS = 10
-- BACKUP LOG [FIMANSQL_SERVER3] TO  DISK = N'd:\sql\FIMANSQL_Server3_Transaktionsprotokoll%date%.trn' 
BACKUP LOG [FIMANSQL_SERVER3] TO  DISK = @filename3

GO
-- reduzieren der Log-Datei
DBCC SHRINKFILE ("FIMANSQL_Server2_log")
GO

Tschau
Martin

25.07.2023 - 17:23 Uhr

achja, es darf auch nicht unter

C:\Program Files

bzw.

C:\Program Files (x86)

sein. Das ist der v. g. Bug.

25.07.2023 - 17:14 Uhr

Hallo,

habe es gelöst.

Dein Hinweis hat mich auf die Idee gebracht.

Habe das Deploy-Verzeichnis lokal reinkopiert, dann ging es. Habe nun die Dateien verglichen, die per Innosetup installiert wurden.
Beim Editieren war mir nicht aufgefallen, dass neben der DLL-Datei auch noch 2 weitere Unterverzeichnisse neu dazugekommen sind.
Die habe ich nun ergänzt und nun scheint es zu klappen.

Danke für den Ideen-Bringer.

Tschau
Martin

25.07.2023 - 16:16 Uhr

Das Problem ist nur, beim Deployen auf dem lokalen PC oder auf einem anderem PC.

Innerhalb der Entwicklungsumgebung werden Webseiten (egal welche, mit/ohne Scripte) korrekt dargestellt.
Auch die EXE-Datei im BIN-Verzeichnis, direkt nach dem Erstellen, läuft korrekt.

25.07.2023 - 14:09 Uhr

klar, der geht einwandfrei.

Alles andere geht auch.

Rufe ich die EXE-Datei direkt bei der Entwicklung auf, geht es.

Deploye ich es auf dem PC, dann zeigt diese Version leider keine Webseiten innerhalb des Programmes an.

25.07.2023 - 13:49 Uhr

Hallo,
habe in meine winforms-VB.net/C#-Anwendung webview2 eingefügt.
Das klappt in der Laufzeitumgebung und nach dem Compilieren.
In der Anwendung werden Browserdarstellungen mit webview2 durchgeführt.

Beim Installieren auf dem PC per Innosetup, erhalte ich zwar keine Fehlermeldung,
aber das webview2 zeigt nichts an.
Eintrag in Innosetup:
Source: "...\Microsoft.Web.WebView2.WinForms.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "...\Microsoft.Web.WebView2.Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "...\Microsoft.Web.WebView2.Wpf.dll"; DestDir: "{app}"; Flags: ignoreversion

Habe gelesen, webview2 muss als Feature oder ähnl. auf dem PC installiert werden.
Wenn ich das mit der Runtime versuche, dann wird gesagt, ist installiert.
In der App-Liste steht es auch drin, bei Win10 und Win11.

Weiss jemand, ob man noch irgendwas installieren muss/eintragen muss ?

Links:
erste Schritte:
https://learn.microsoft.com/de-de/microsoft-edge/webview2/get-started/winforms
Deployment:
https://learn.microsoft.com/de-de/microsoft-edge/webview2/concepts/distribution

Tschau
Martin

28.05.2023 - 15:14 Uhr

ich habe doch noch was gefunden:

Projektmappen-Explorer → My Project → Verweis

Dort stehen oben die oben die Verweise. Meine Unterprojekte/Klassen müssen dort stehen.
Darunter steht "Importierte Namespaces". Dort muss der Haken jeweils weg sein.

Dann erhalte ich keine Warnhinweise mehr.

PS: Die Hinweise über Google zum diesem Weg, waren sehr irreführend.

Tschau
Martin

28.05.2023 - 14:49 Uhr

Hallo,

Danke für den Link. Habe mir das angeschaut und sowas schon vermutet. Allerdings ist mein Problem: Wo finde ich den "Project Designer", wo "Importierte Namespaces" ?

Ich arbeite mit Visual Studio 2022 Community-Edition, Framework 4.8.

Habe zwar den "Projektmappen-Explorer", dort die "Verweise" + "My Project" vom Projekt.
In "Verweise" sind die jeweiligen Unterprojekte aufgelistet, in "My Project" finde ich "Einstellungen", aber dort nichts konkretes mehr.

Wo finde ich denn diese "Importierte Namespaces" ?

PS: Googeln hat mir leider nicht weitergeholten.

Tschau
Martin

28.05.2023 - 10:52 Uhr

Hallo,

ich habe ein größeres .net-Projekt: VB + C#

Die Oberfläche ist (aus historischen Gründen) in VB.net entwickelt, die meisten Klassen aber in C#.

Wenn ich mein Projekt kompiliere (neu erstelle), erhalte ich 4 x folgende Warnings:

warning BC40057: Der in Imports "FIMANFassade" auf Projektebene angegebene Namespace oder Typ enthält keine öffentlichen Member
oder wurde nicht gefunden. Stellen Sie sicher, dass der Namespace oder der Typ definiert ist und mindestens einen öffentlichen
Member enthält und der importierte Elementname keine Aliase verwendet.

Das Projekt läuft einwandfrei, möchte aber trotzdem den Warning-Hinweis entfernen. Wie mache ich das ? Was fehlt ?

Tschau
Martin

21.10.2022 - 09:05 Uhr

Hallo,
ich möchte die Webseite per Code herunterladen, allerdings erhalte ich keine konkreten Inhalte. Anscheinend werden diese nachgeladen, C# erkennt das nicht.
Wenn ich mit dem Firefox die Seite aufrufe, erhalte ich die Inhalte angezeigt, mit dem IE11 allerdings nicht. C# verhält sich anscheinend eher wie IE11 als ein moderner Browser.

Link:
https://app2.msci.com/products/index-data-search/

Wie komme ich trotzdem an den Inhalt ?

Mein Code bisher:


            const String fireFoxUserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15";
            //Anfrage an die Übergebene URL starten
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.UserAgent = fireFoxUserAgent;

            //Antwort-Objekt erstellen
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            //Antwort Stream an Streamreader übergeben
            StreamReader sr = new StreamReader(response.GetResponseStream());

            //Antwort (HTML Code) auslesen
            string html = sr.ReadToEnd();

            //Streamreader und Webanfrage schließen
            sr.Close();
            response.Close();

            //Quellcode zurückgeben
            return html;

Auch mit dem HtmlAgilityPack erhalte ich keinen Tabelleninhalt:


            HtmlWeb web = new HtmlWeb();
            var htmlDoc = web.Load(LStr_Link);
            var node = htmlDoc.DocumentNode.SelectSingleNode("card border-zero");

Wie komme ich trotzdem ran ?

Tschau
Martin

17.10.2022 - 19:31 Uhr

ich weiß, HTML ist für Webdarstellung im Browser.

In dem ist im Body-Bereich die Tabelle <table> mit den Kopfzeilen <th>, Zeilen <tr> und Spalten <td>.
Dachte, es gibt schon schönen Code dafür, den ich gerade verwenden könnte, ohne stundenlang das auszutüffeln.

Tschau
Martin

17.10.2022 - 19:10 Uhr

Hallo,
ich suche ein Stück Code, um eine HTML-Datei in CSV umzuwandeln.
Das Einlesen ist kein Problem, aber wie wandle ich den HTML-Code in CSV um ?
Die HTML-Daten sind in tables und in th (Kopf), tr (Zeile) und td (Spalte) unterteilt.

Habe beim googlen nichts gefunden. Es sollte ohne Zusatz-DLL gehen.

PS: Die HTML-Datei wird per Excel wunderbar in einer Tabelle dargestellt. Ich möchte aber eine autom. Konvertierung.

Tschau
Martin

08.07.2022 - 12:45 Uhr

ah, habe ein POST vergessen, aber trotzdem:


C:\>curl -d  "@S:\FIMAN\config\CurlBlackrock_Post.txt" -X POST "https://www.blackrock.com/at/privatanleger/product-screener/product-screener-v3.jsn?type=excel"
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

Vermutlich ist meine txt-Datei nicht korrekt. Was muß da rein, von diesen vielen -H -Teilen ?

08.07.2022 - 12:41 Uhr

ah, Danke für den Hinweis.
Habe den CURL mal etwas zerpflückt, dieser besteht aus div. Teilen.


"https://www.blackrock.com/at/privatanleger/product-screener/product-screener-v3.jsn?type=excel" 
-X POST 
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0" 
-H "Accept: application/json, text/plain, */*" 
-H "Accept-Language: de,en-US;q=0.7,en;q=0.3" 
-H "Accept-Encoding: gzip, deflate, br" 
-H "Referer: [url]https://www.blackrock.com/at/privatanleger/produkte/product-list[/url]" 
-H "Content-Type: application/x-www-form-urlencoded" 
-H "Origin: [url]https://www.blackrock.com[/url]" 
-H "Connection: keep-alive" 
-H "Cookie: STICKY_SESSION_COOKIE_UK_RETAIL01_LIVE=""a39b33c9c603a57c""; STICKY_SESSION_COOKIE_UK_RETAIL01_LIVE=""6d3d24608e3f907f""; _abck=F39CDF40E4F5BE98F7F0C90CB6B3385C~0~YAAQj6cpF/RT651/AQAA8ZmzvQeVdc1wrl1/i94WNqHdTuCTFz+GdsH7+C8LLbArPjJMwlfo0DoIqd3VjmVBQlicQrjOGgM0aijZ9q4HbZLbHkdYC5kNOTkiEtlbUTsqmAEqEYI1ORVvLunNC5qYCqX9HFqZtdwywfyoeYQxp/bk1QSniUWa57dA/CGFdQ5V4qPSEVCXcSvOpp08axlyd7ZcBvXoINZ6x3nonN4bnMMEpCAJSlSwi/BZ04a8uXwb07ZwBJnaGu7XMqlSD3VW6rv5v7on6RE8Wbsbbf/6BcTTCy1a/G6xmAItjdicnw69QzyJ2c9AXMM2gP0ZO+lhQFmHmtMFlNGzim1aR9KRL3bxQbmtWShX9WD4gE2MGJWVXgD3hGd+javjvmFBy0Vr1ffAqlPqvxIgUqOZ~0~||-1||~-1; ts-one-at-locale=de_AT; utag_main=v_id:017efbde4f8c001fae6641d8040b0004e006600d00fb8`$_sn:110`$_se:13`$_ss:0`$_st:1657178489879`$vapi_domain:blackrock.com`$ses_id:1657176492977"%"3Bexp-session`$_pn:1"%"3Bexp-session; cleared-old-consent-cookies=; OptanonConsent=isGpcEnabled=0&datestamp=Thu+Jul+07+2022+08"%"3A48"%"3A13+GMT"%"2B0200+(Mitteleurop"%"C3"%"A4ische+Sommerzeit)&version=6.27.0&isIABGlobal=false&hosts=&landingPath=NotLandingPage&groups=C0001"%"3A1"%"2CC0003"%"3A0"%"2CC0002"%"3A0"%"2CC0004"%"3A0&geolocation="%"3B&AwaitingReconsent=false&consentId=4badc4b8-2fd8-4e10-aa31-7f67c8aafda5&interactionCount=0; OptanonAlertBoxClosed=2022-02-25T07:47:10.248Z; AMCV_631FF31455E575197F000101"%"40AdobeOrg=-1303530583"%"7CMCIDTS"%"7C19049"%"7CMCMID"%"7C69911534768528624172266666002894366157"%"7CMCAID"%"7CNONE"%"7CMCOPTOUT-1645782430s"%"7CNONE"%"7CvVersion"%"7C3.3.0; ts-de-retail-locale=de_DE; SSESSIONID_uk-retail01=YWQxOWYyMTgtNTc5Ny00OGY2LThmYjUtOGNjMTMxZmUwNDM1; b71e11317c8db928fe965cfeebd54975=9b12494171fc6d32038a96be85e3233c; NAUTILUS-XSRF-TOKEN=09f27898-1bed-447c-9bd2-5afb94395eb0; c68299fd7efaf68170a7b1f970bcc72f=37f6df3f3363694cb2e8ca59cdb9c35b; AllowAnalytics=false; AMCVS_631FF31455E575197F000101"%"40AdobeOrg=1; blkUserType-one-at=individual; test-cleared-blacklisted-cookies=; ak_bmsc=5EE6391DAFCBC3112E732BE89F0A50E7~000000000000000000000000000000~YAAQnCo1FzHgSNKBAQAALYZq1xAOciLLSIgBwvOj87xdU6b9qe7geT/b7MMcbI8Np53acWjY6bcy4hYZiG1f+mvxA5ZSw0k07DIiZ6Vdn845lbRg2aTZTH2/ysCpxP/Rvk6n2W7NsfZ14Xo7JHz+aMtVuGH9YVgl4NbBqK72quBRw+FKqww0e2oeWNdnQLq4NQhfwk4/TG8t4x6nV9oIzMTdqs80masK/ipUBT2/Gy4/3K0Qs9bqembuMnLT8eM/+OfRoh6rBAqdRwNdwUNP2kBHcN9pmZ0H2ufQslVld+r8bnB7JBf9b8ViCSUAQ11U0JW/bWqatcnHf+3DdNDA2mmtCnYRcCvTxvGZWMZ1tJXlKuZ0ZfVAyefcHa5YOJZfx4FOumopInDwDdXCgg==; bm_sv=0427DB93C7D4AE0667EBF5A6AAC488AA~YAAQnCo1F1MxSdKBAQAAHoFt1xBChDWv0JckMwHoVyX6iAqVrH9vwy0USc8viBmI+7eMibrLn6qEQG0TtudAuSpxq1DUVvuQJgiA9FZ0WRG+53dwwKX3IBCPOkiP4q+Z65mdhPwrM6+cd7+1GFrTW/nQii01xf5sBK+FjzdbjAjz3OA394rU1SEnOyx2u97lgS9+fjbyxZ8ewPIxT2MOcYcgIAlShx1qwI8TUxuCHRLvAnbMndIeT7uGOyRF8Gpd5N0n~1; bm_mi=E5C4CA9E7131BC709BFD76A6141D6363~YAAQnCo1F7DqSNKBAQAAHOZq1xDm2G92/YA9M8vz6V8wNrtQbIByqwkCdBfttev4GaC4o5uaC5BnfcHXVEEdYM08vP+iY3WN+pUF3y8yLVfG+wM3dfz6/8Zc1IpV2Frib5qlhtq+cf7P9R/UsxaeOsvtv5taWUnOQISHck+zR6MOB4oFfiD12sCdMmBtLKYbZZC8Drn6s4H5dky/voB4/EKgJpdrdP1PWJwgScP/NIr6OaRjtWhfR1lhPsi1+OJI4IShdiACkgieukvjB6aVts70QOIW5ftzRfJgXicjUUfHM+V+vWDZYNmQTcdLoIxvbodKU6mmS/H9cT5XRhxB5TZsMa7JZUwssyKuvzkRODLIwdgWDQCFz5lhX8PTZVCYCP816Jb5/uBgYZ4tiDdmH0KDMdKZSU9Wuv4zUjTBgQa5zj3OjybRzdkzKVP+XQ==~1" 
-H "Sec-Fetch-Dest: empty" 
-H "Sec-Fetch-Mode: cors" 
-H "Sec-Fetch-Site: same-origin" 
-H "TE: trailers" --data-raw "dcrPath=/templatedata/config/product-screener-v3/data/de/austria/one-at&portfolios=228238-228239-228240-228242-228268-228270-228271-228272-228273-228274-228275-228280-228281-228282-228283-228289-228291-228294-228295-228296-228297-228298-228299-228304-228305-228306-228307-228308-228309-228310-228311-228313-228315-228321-228322-228323-228326-228327-228328-228329-228332-228333-228334-228335-228337-228338-228339-228340-228341-228342-228343-228346-228347-228348-228349-228350-228352-228354-228355-228356-228357-228360-228361-228362-228365-228366-228367-228368-228369-228375-228376.....

Die div. Teile beginnen immer mit -H
Allerdings kenne ich die Bedeutung nicht.
Gem. Deinem Link habe ich mal geschaut. Erhalte aber nur das, wenn ich das mal direkt im CMD ausführen möchte.


curl -d  "S:\FIMAN\config\CurlBlackrock_Post.txt" -X [url]https://www.blackrock.com/at/privatanleger/product-screener/product-screener-v3.jsn?type=excel[/url]
curl: no URL specified!
curl: try 'curl --help' for more information

Tschau
Martin

07.07.2022 - 21:26 Uhr

Die Curl lautet allerdings so lange, daher soll diese in eine Datei verlagert und über CURL aufgerufen werden. Für CMD ist das zu lange, ebenfalls für HTTP-Abfrage:

curl "https://www.blackrock.com/at/privatanleger/product-screener/product-screener-v3.jsn?type=excel" -X POST -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0" -H "Accept: application/json, text/plain, /" -H "Accept-Language: de,en-US;q=0.7,en;q=0.3" -H "Accept-Encoding: gzip, deflate, br" -H "Referer: https://www.blackrock.com/at/privatanleger/produkte/product-list" -H "Content-Type: application/x-www-form-urlencoded" -H "Origin: https://www.blackrock.com" -H "Connection: keep-alive" -H "Cookie: STICKY_SESSION_COOKIE_UK_RETAIL01_LIVE=""b62664beee635423""; ts-de-retail-locale=de_DE; s_fid2=3F7DD1BF89045F81-2105CE523D848B20; blkUserType-de-retail=individual; de-retail-recent-funds=237595; ts-one-locale=en_US; s_fid=26D2EB51B0144ED1-0B35A90747922AD4; ts-one-at-locale=de_AT; blkUserType-one-at=individual; _abck=7A6B3509B8B8DDC30A5C0CB5DE52E1800YAAQltlraI1qFp5/AQAAVGGvoAdlsR+DnhCfC6xSqL2fi1w1fF1BbQJOIwpyUofL/MIBLHLWZ8BsSxquZttNMNEd6pZpF85dbc0ad5mAwHoB12lkQpku23l3N11p5RKd1A4L7QCnEkCzOBbgb76pERX7vEj88TcTDoMiBXpBiJtf8c3X/SpIX+LLY8StjlMUhu58neMYK/56gIrSI3J2cxGFl0JyPfTx1H1F4qw9jLgTHnCGq0VdRspqs2GxG8jPJ/XNXpDvHXsbddXyvoejQU5r+OUage1nimvdNdYQqkOZIJ8przs1LjctKW/N8Ig4rOhefEl6Z0t1GQufBQDiC4xhExgWpvGcGTnZitCRJc73nCqV/aawZ9mWGXIP/6j4CRPIrneLTfF84WWfyjssKoQyyB0EFWSO0UZS0||-1||-1; utag_main=v_id:017ec649b8870038f4f0b376fc5a0004e006600d009dc$_sn:27$_se:4$_ss:0$_st:1657223506117$vapi_domain:blackrock.com$ses_id:1657221685270"%"3Bexp-session`$_pn:1"%"3Bexp-session; cleared-old-consent-cookies=; OptanonConsent=isGpcEnabled=0&datestamp=Thu+Jul+07+2022+21"%"3A21"%"3A26+GMT"%"2B0200+(Mitteleurop"%"C3"%"A4ische+Sommerzeit)&version=6.27.0&isIABGlobal=false&hosts=&landingPath=NotLandingPage&groups=C0001"%"3A1"%"2CC0003"%"3A0"%"2CC0002"%"3A0"%"2CC0004"%"3A0&geolocation="%"3B&AwaitingReconsent=false&consentId=f22357d1-3780-4c3d-bd0c-1c6d62f64cc9&interactionCount=0; OptanonAlertBoxClosed=2022-02-26T06:55:53.073Z; AMCV_631FF31455E575197F000101"%"40AdobeOrg=-1303530583"%"7CMCIDTS"%"7C19050"%"7CMCMID"%"7C52307340170082227444897750253089020135"%"7CMCAID"%"7CNONE"%"7CMCOPTOUT-1645865753s"%"7CNONE"%"7CvVersion"%"7C3.3.0; JSESSION_uk-retail01=E241FFC8607E8864970598DA3C60EB5A.03; SSESSIONID_uk-retail-k=ZjVhNjgwZWUtNWEwOC00NjVkLThjNGItNzJmYWRhOTZjZGFh; b71e11317c8db928fe965cfeebd54975=90d3a573e74022e0aed3e22e0265fc3d; c68299fd7efaf68170a7b1f970bcc72f=c9f30c2ba657f6f2fbc9cb760a62fa73; NAUTILUS-XSRF-TOKEN=199399fd-96b7-4a05-9e32-7185c7411311; SSESSIONID_uk-retail01=ZjdkYTllMWQtMTA0OC00ZjE1LWI4Y2MtZWZkMWM3NjhmZTlh; SSESSIONID_uk-retail01=NjE5YzFhNGMtNmY2Zi00MjAxLWI1ZWQtNDk4MTFhMGFjMzk2; AllowAnalytics=false; AMCVS_631FF31455E575197F000101"%"40AdobeOrg=1; ak_bmsc=115A400EFA709BF27958E3D9CAFD6BFF000000000000000000000000000000YAAQYE1lX3WEadeBAQAAl+kc2hDF5B/jxTsJf4jVGM27KSM5h6j4Si6rkJbEG+l/RO3ec9QbBlQzRnAtd8LH9O8UCkRfTMYwA+4ONcewPSHbeYCl0iJ89IKM72b0auNivTNa9kecPNHBvtTSUX3M7lJ1W3Ta7nrpi56/whr+y7GczhVpw5gzuOwlp7f/nlZqgP7eOf714DH5OAglsL8u0ECu4fIUpQRUyHw0lWGcm1kpsg0Z0vp4MmwVxupPGRgiXIeBkWwcpGsUjmvUCCXV55koQx1kMc+lRiXib7XGIQP+9x49Syur9JFz/50Vm1NZCHJyc9xX8sVq+6wcrm0QHAVJiaoKV27TADXlykHPS8jCxvvLoR/SPL9LsQjvO78D5Hwu5oDY0281/p2+hA==; bm_sv=7314F56303BF165EE115A314564A0EF2YAAQYE1lX+qEadeBAQAAWfcc2hCO+/kgqMuv8phnPupTXc/tHVP+cj+53t4O8NksHSonqOcivI11XF5ahYcquFeNwKW4e1iW3LwMW7Zts0xeoZhFEUOOZ5Wp2POwl2XLNFKw9H/a7Wx4HDpcp0l22nL0gTswyeG2zlyCvA5vkTQqagikkLWW7rjz9v8oAJSE/1B1H6cuGBlj+JZcFoU3N7NmadJXpU3GU/oZDTVKnxLsAjMLhRpxmFz6dFcvwiC+1Pu5~1; test-cleared-blacklisted-cookies=" -H "Sec-Fetch-Dest: empty" -H "Sec-Fetch-Mode: cors" -H "Sec-Fetch-Site: same-origin" -H "TE: trailers" --data-raw "dcrPath=/templatedata/config/product-screener-v3/data/de/austria/one-at&portfolios=228238-228239-228240-228242-228268-228270-228271-228272-228273-228274-228275-228280-228281-228282-228283-228289-228291-228294-228295-228296-228297-228298-228299-228304-228305-228306-228307-228308-228309-228310-228311-228313-228315-228321-228322-228323-228326-228327-228328-228329-228332-228333-228334-228335-228337-228338-228339-228340-228341-228342-228343-228346-228347-228348-228349-228350-228352-228354-228355-228356-228357-228360-228361-228362-228365-228366-228367-228368-228369-228375-228376-228377-228378-228379-228383-228384-228385-228390-228393-228395-228396-228397-228398-228399-228400-228401-228402-228403-228404-228408-228409-228410-228411-228414-228415-228417-228418-228419-228421-228422-228423-228424-228425-228426-228427-228428-228429-228430-228434-228435-228437-228438-228439-228464-228466-228468-228470-228471-228472-228473-228475-228476-228477-228478-228479-228481-228482-228483-228484-228485-228486-228487-228488-228497-228498-228499-228501-228502-228503-228505-228506-228507-228508-228512-228513-228518-228519-228520-228521-228522-228523-228524-228525-228526-228528-228529-228530-228531-228532-228534-228536-228537-228538-228539-228540-228541-228542-228543-228546-228547-228548-228549-228550-228551-228552-228556-228557-228558-228559-228560-228563-228564-228565-228566-228567-228571-228573-228574-228575-228576-228578-228579-228581-228583-228585-228586-228588-228589-228590-228591-228592-228593-228595-228596-228597-228598-228603-228604-228605-228606-228607-228608-228609-228610-228611-228612-228613-228614-228617-228619-228620-228621-228622-228623-228626-228627-228628-228629-228630-228631-228632-228633-228634-228635-228636-228637-228638-228639-228640-228641-228642-228643-228644-228648-228651-228652-228653-228654-228655-228656-228657-228658-228659-228660-228665-228669-228674-228675-228676-228677-228678-228679-228690-228691-228692-228693-229019-229020-229021-229022-229024-229027-229028-229029-229030-229031-229032-229033-229042-229043-229044-229045-229046-229050-229051-229052-229055-229056-229057-229059-229060-229061-229062-229063-229064-229065-229066-229067-229068-229069-229070-229071-229072-229076-229077-229078-229079-229080-229081-229082-229085-229086-229087-229090-229091-229092-229095-229096-229097-229098-229099-229100-229101-229105-229106-229107-229108-229109-229110-229111-229112-229113-229114-229115-229116-229118-229121-229123-229124-229125-229127-229128-229129-229130-229131-229132-229133-229134-229135-229136-229138-229139-229141-229143-229147-229150-229158-229159-229160-229165-229166-229169-229171-229175-229177-229178-229179-229181-229182-229185-229189-229190-229191-229194-229195-229196-229197-229199-229200-229201-229202-229203-229208-229209-229277-229279-229280-229281-229283-229284-229285-229286-229289-229290-229291-229293-229295-229296-229297-229298-229299-229300-229301-229302-229309-229313-229319-229320-229321-229322-229323-229324-229325-229326-229327-229328-229330-229331-229332-229333-229334-229335-229336-229337-229338-229340-229341-229342-229343-229344-229345-229347-229348-229349-229351-229352-229355-229356-229399-229404-229405-229406-229407-229412-229444-229445-229446-229449-229450-229474-229475-229476-229477-229478-229547-229550-229551-229552-229556-229557-229558-229560-229561-229562-229563-229564-229565-229566-229570-229571-229572-229573-229576-229577-229578-229582-229583-229584-229587-229588-229589-229590-229591-229596-229597-229598-229601-229604-229605-229606-229607-229610-229611-229612-229613-229617-229618-229621-229636-229637-229638-229639-229640-229641-229642-229644-229645-229646-229648-229649-229650-229651-229653-229654-229655-229656-229659-229661-229662-229665-229666-229673-229674-229677-229678-229682-229684-229685-229687-229690-229692-229693-229694-229696-229698-229700-229702-229703-229704-229705-229706-229707-229712-229724-229725-229726-229727-229728-229729-229730-229731-229732-229733-229734- ....
-> ist nur 30 kb groß ...

Tschau
Martin

07.07.2022 - 18:08 Uhr

Hallo,

ich bin nun auf der Suche für das 2. Problem, d. h. wenn die Parameter über 8k sind, dann geht es mit dem CMD-Befehl nicht mehr.
Ich suche nun eine Lösung, daß ich für den CURL-Befehl die Parameter über eine Datei hinzufüge, allerdings klappt das nicht.

        curl -d &quot;c:\Curl.txt&quot;    

oder
curl -d "@c:\Curl.txt"
curl <"c:\Curl.txt"
gehen nicht.

Erhalte nur
curl: no URL specified!
curl: try 'curl --help' for more information

Die Hilfeangabe hat leider nicht geholten.
Hat das mal jemand irgendwie geschafft ?

Tschau
Martin

14.03.2022 - 15:47 Uhr

Hallo,
Danke für diese Hinweise, aber diese haben mich nicht weitergebracht.

Bin durch Zufall darauf gestoßen, daß man den Browser die Netzwerkanalyse durchführen kann. Dort sieht man quasi die Quelle zum Download.
Das ist ein CURL-Aufruf.
Das geht direkt in CMD.exe und entsprechend kann die Ausgabe in eine Datei umgeleitet werden.
Mit einem C#-Process kann das dann heruntergeladen und gespeichert werden.


            String Command = @"/C "+ PfadCurl + "curl " + CurlLink + " >" + Filename;
            Process.Start("cmd.exe", Command);

Bei 2 Fondsanbietern hat es geklappt, bei einem ist die CURL-Adresse zu lang für CMD. Suche noch nach einer Lösung.

Es ist nur eine Lösung für spezielle Fälle, nicht für alles.

Tschau
Martin

09.02.2022 - 17:25 Uhr

klar, eine API wäre eine feine Sache, steht aber nicht zur Verfügung. So waren zumindest deren Aussagen auf Nachfrage.

Ich will auch kein HTML crawlen, nur die vorhandene Excel-Datei erhalten, die für mich quasi hinter einem Button versteckt ist.
Ich weiß nicht, wie ich per Code den Button drücken kann.

Tschau
Martin

09.02.2022 - 13:23 Uhr

Hallo,
ich möchte autom. Dateien von einer Webseite herunterladen, wofür man erst einen Button anklicken muß.
z. B. hier:
https://de.allianzgi.com/de-de/unsere-fonds/fonds/list#
-> Download Daily Nav
oder
https://www.ishares.com/de/privatanleger/de/produkte/etf-investments#!type=emeaIshares&tab=overview&view=list
-> Fondsliste herunterladen -> Alle Fonds herunterladen

Aktuell mache ich das tägl. manuell, möchte das aber automatisieren.

Wie kann ich solche Dateien per C# (.net 4.8, WinForms) herunterladen ?

Tschau
Martin

01.02.2022 - 18:51 Uhr

Hi,
ich löse das nun mit dem ExcelDataReader:

https://github.com/ExcelDataReader/ExcelDataReader

Tschau
Martin

31.01.2022 - 06:53 Uhr

Hallo,
ich möchte XLS/XLSX-Dateien zu CSV konvertieren.
Habe dazu etwas gefunden und es ist relativ gut, aber bei manchen Excel-Dateien, wir die erste Zeile nicht erkannt/ausgelesen.
C# .NET - Convert Excel 2007 (XLSX) to CSV using OLE DB

Da wird alles ausgelesen, außer der 1. Zeile:


                //Fill the dataset with information from the Sheet 1 worksheet.
                var adapter1 = new OleDbDataAdapter("SELECT * FROM [" + worksheetName + "]", connectionString);
                var ds = new DataSet();
                adapter1.Fill(ds, "results");
                DataTable data = ds.Tables["results"];

                //Show all columns
                for (int i = 0; i < data.Rows.Count - 1; i++)
                {
                    for (int j = 0; j < data.Columns.Count; j++)
                        Console.Write("\"" + data.Rows[i].ItemArray[j] + "\";");
                    Console.WriteLine();
                }

Welchen Gedankenfehler habe ich hier drin, den ich übersehe ?

Tschau
Martin

27.12.2021 - 13:08 Uhr

Hi,
das mit dem Datumsprüfen kann ich irgendwie abhaken, egal ob Casten oder Parse oder ähnl.
Habe Zahlenwerte, z. B. 8,1943 und diese werden als August 1943 erkannt, oder 12.5432 die als Dezember 5432 erkannt werden.
Habe es anders gelöst, in dem ich angebe, nach welcher Art eine Spalte sortiert werden soll: Text, Zahl oder Datum.
In meinen Tabellen verwende ich keinen Mischbetrieb, d. h. ich entscheide welche Art (s.v.) es ist. Eine autom. Erkennung ist irgendwann fehlerbehaftet.

Danke für die Unterstützungen.

Tschau
Martin

26.12.2021 - 16:44 Uhr

muß es doch etwas umständlicher machen, als gedacht:


            else if (Double.TryParse(inhalt, out TestZahl))
            {
                // Werte als Double vergleichen
                double vx = double.Parse(((ListViewItem)x).SubItems[col].Text);
                double vy = double.Parse(((ListViewItem)y).SubItems[col].Text);
                result = vx.CompareTo(vy);
            }

Geht das auch eleganter ?

26.12.2021 - 16:35 Uhr

Hallo Abt,
die Erkennung über den Typ habe ich. Allerdings geht das mit dem Compare nicht, gibt es nicht für int bzw. double. Es gibt nur CompareTo. Das klappt allerdings auch nicht.


            else if (Double.TryParse(inhalt, out TestZahl))
            {
                // Werte als string vergleichen
                result = (((ListViewItem)x).SubItems[col].Text.CompareTo(((ListViewItem)y).SubItems[col].Text));
            }

Haste noch einen Tipp für mich ?

Tschau
Martin

26.12.2021 - 15:36 Uhr

Habe gerade eine Lösung gefunden:
Da muß ein "new" rein ...


this.listView1.ListViewItemSorter = [b]new[/b] ColumnSorter(e.Column, listView1.Sorting);

  1. Problem danach:

Hier werden Werte nach String verglichen:


                // Werte als string vergleichen
                result = String.Compare(((ListViewItem)x).SubItems[col].Text,
                            ((ListViewItem)y).SubItems[col].Text);

Ich möchte aber nach Zahlen mit Komma (also Double) aus der Tabelle vergleichen.
Wie mache ich hier einen Vergleich ?

Tschau
Martin

26.12.2021 - 15:19 Uhr

Hallo,
ich habe eine Listview im im DETAIL-Style möchte ich die Werte nach Spaltenklick sortieren lassen.

Habe dazu diesen Code gefunden, der vielversprechend aussieht:

C# - ListView Spalten sortieren

Allerdings erhalte ich hier in der letzten Zeile eine Fehlermeldung:

Fehlermeldung:
CS1955 Der nicht aufrufbare Member "ColumnSorter" kann nicht wie eine Methode verwendet werden.


                listView1.Sort();
                // ListViewItemSorter property neu setzen
                this.listView1.ListViewItemSorter = ColumnSorter(e.Column, listView1.Sorting);

Die Klasse ist gem. dem Snippet aus dem Link erstellt.
Hat jemand eine Idee, was falsch ist, wie es korrekt ist ?

Tschau
Martin

Klasse:


using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Listview_Sorter
{
    public class ColumnSorter : IComparer
    {
        //https://dotnet-snippets.de/snippet/listview-spalten-sortieren/1158
        private int col;
        private SortOrder order;
        public ColumnSorter()
        {
            col = 0;
            order = SortOrder.Ascending;
        }
        public ColumnSorter(int column, SortOrder order)
        {
            col = column;
            this.order = order;
        }

        public int Compare(object x, object y)
        {
            int result;

            try
            {
                // versuchen die 2 Werte als Datum zu vergleichen
                System.DateTime first =
                        DateTime.Parse(((ListViewItem)x).SubItems[col].Text);
                System.DateTime second =
                        DateTime.Parse(((ListViewItem)y).SubItems[col].Text);
                // Vergleichen der 2 Werte
                result = DateTime.Compare(first, second);
            }
            // Wenn der Vergleich nicht als Datum geht als string vergleichen
            catch
            {
                // Werte als string vergleichen
                result = String.Compare(((ListViewItem)x).SubItems[col].Text,
                            ((ListViewItem)y).SubItems[col].Text);
            }

            if (order == SortOrder.Descending)
            {
                //invertieren da desc
                result = result * -1;
            }
            return result;
        }
    }
}

12.05.2021 - 07:04 Uhr

Moin Danke,
hatte nach komplettem Virus-Namen gesucht und nichts gefunden.
Bei ist allerdings kein ICO im Innosetup enthalten. Habe ich mal eines ergänzt.
Muß ich mal durchtesten.

Tschau
Martin

11.05.2021 - 22:12 Uhr

haste dazu eine Quelle ? Finde dazu nichts.

11.05.2021 - 19:00 Uhr

Habe es mal dort eingetragen.
Da bin ich mal gespannt, ob das etwas bringt.

11.05.2021 - 18:43 Uhr

Hallo,
habe ein eigenes Windows-Forms-Projekt. Bei der Installation, erhalte ich immer den Hiwneis, daß dort ein Virus enthalten sei:

Trojan:Script/Wacatac.B!ml

Das ist immer bei einer Neuerstellung (mit Innosetup) des Setups und Installation auf dem lokalem Rechner.
Das ist aber nur auf einem PC.
Ansonsten erhalte ich vom Defender keine Virenhinweise.

Damit meine EIGENE Software läuft, muß ich im Defender diese Software zulassen. Das ist sehr nervend.

Weiß jemand, was ich da tun kann ?

Tschau
Martin

29.12.2020 - 12:12 Uhr

Hallo,
habe ein Ewigkeitsprojekt unter .NET. Es läuft aktuell mit .net 4.8 Framework.
Es hat verschiedene Projekte, historisch verdingt ist das Frontend (Windows Forms) in Visual Basic, die Klassen sind in C#. Klappt gut.

Wollte es nun in die nächste Generation rüberbringen, auf .NET 5.0.
Beim Zielframework, kann ich aber max. .NET Framework 4.8 auswählen, .NET 5.0 steht nicht zur Auswahl. Habe Visual Studio Community 2019, Version 16.8.3 installiert.

Geht das nicht umzustellen, ggf. mit div. Anpassungen oder muß ich noch etwas vorab tun ?

Tschau
Martin

03.10.2019 - 10:03 Uhr

Hallo,
ich habe eine Windows-Form, als MDI-Form.
Darunter sind diverse unterschiedliche Child-Forms.
Auf der MDI-Form ist eine Statuszeile.
Nun möchte ich von den Child-Forms auf diese MDI-Form den Text ausgeben.

In VB.net geht das recht gut, kann direkt per
MDIForm.Info(Text)
-> public sub Info(Text) ...
die dortige Methode aufrufen.

Unter C# kriege ich das nicht hin.
Ich muß immer eine Instanz erstellen, dann erhalte ich Zugriff darauf und dann sind alle Werte wieder auf NULL gesetzt.

Hat jemand eine Idee, wie ich das umsetzen kann ?

Tschau
Martin

29.05.2017 - 09:54 Uhr

Das geht leider nur mit einer alten Version des SQL Management Studios. In den neueren wurde der Support wieder herausgenommen.

ok, das erklärt es, daß es mit der 2014/2016er-Version nicht mehr geht. Danke.

SQL Compact läuft immer noch recht gut, man muss nur wissen dass sie nicht weiterentwickelt wird.

Ich habe leider nicht immer die Möglichkeit auf einen SQL-Server, daher setze ich nun dort SQL Compact ein. SQL-Server ist wirklich verdammt gut, sehr schnell. SQL Compact ist ca. 5-10 x langsamer, so mein Eindruck.

Habe mal nach SQLite geschaut, laut Testberichten, ist es noch langsamer als SQL Compact.

Tschau
Martin

28.05.2017 - 13:19 Uhr

Hallo Bernd,
Deine Seite hatte ich mir gestern bereits angeschaut.
Eines war mir aufgefallen:

>> Der neue SQL Server Compact von Microsoft wurde nicht aus dem normalen SQL Server entwickelt, sondern aus dem SQL Server für Windows Mobile. Deshalb ist sein SQL-Syntax anders. Die Verwaltung der Datenbanken kann auch mit Microsoft Management Studio Express durchgeführt werden. <<

Wie kann ich mit dem MMSE mir die CompactCE-Datei anschauen ?
Ich hatte mir mal den SDF Viewer installiert, aber nur die Demo-Version.

Tschau
Martin

27.05.2017 - 23:08 Uhr

Danke, gute Hinweise. Die habe ich als Ergänzung zu Bernds Hinweise noch benötigt.

Access: ajo, schon klar.
Am Liebsten ist mir ein SQL Server, sehr schnell.
Leider steht der nicht immer zur Verfügung, daher noch SQL Compact. Ist leider recht langsam.
Access ist quasi eine Notlösung.

Tschau
Martin

27.05.2017 - 22:57 Uhr

Hallo Bernd,
super. Scheint gut zu funktionieren.
Muß relativ wenig anpassen, aber allgemein viel weniger Code und viel übersichtlicher.
Werde es ausgiebig testen.
Danke.

Tschau
Martin

27.05.2017 - 18:14 Uhr

Das bedeutet das du nach all den Jahren in VB.NET das mit der OOP noch nicht so wirklich verstanden hast.

Sieht so eine Hilfe in einem Forum aus ?

Das meine Lösung nicht perfekt ist, ist mir klar, daher suche ich eine bessere Lösung und möchte diese auch erlernen.

26.05.2017 - 23:33 Uhr

Hallo,
meine Anwendung unterstützt aktuell den MS-SQL-Server, SQL-Compact und die Access-Datenbanken (MDB).
Um die Daten abzufragen, speichern, ändern, etc. habe ich relativ zentrale Routinen, aber ich verzweige immer für jede Datenbank-Technologien in eine extra Routine. So ergibt sich, daß der Code quasi 3 x vorrätig ist, allerdings an die diversen Technologien angepaßt sind.
Ich find das etwas umständlich, nicht so sauber.
Gibt es eine gute Lösung ?

Ein Ausschnitt von meinem Code in C#:

Tschau
Martin


public Boolean change(SQLDatenbank LSQLServer, FIMANMandant LMandant)
        {
            Boolean Rueckmeldung = false;
            String SQL = "Update ZAEHLER set ";
            SQL  += "NR_IMMOBILIE = @NR_IMMOBILIE,";
            ...
            SQL  += "WHERE NR = @Nr";
            switch (LSQLServer.SQLDatenbankFormat)
            {
                case DatenbankFormat.keineDatenbank_0:
                    break;
                case DatenbankFormat.SQLCompact:
                    SqlCeConnection conSqlCe = GetConnectionSqlCe(LSQLServer);
                    Rueckmeldung = change(SQL , conSqlCe, LMandant);
                    break;
                case DatenbankFormat.SQL2005Server:
                    SqlConnection conSql = GetConnectionSql(LSQLServer);
                    Rueckmeldung = change(SQL , conSql, LMandant);
                    break;
                case DatenbankFormat.Access2007:
                    OleDbConnection conOleDb = GetConnectionOleDb(LSQLServer);
                    Rueckmeldung = change(SQL , conOleDb, LMandant);
                    break;
                default:
                    break;
            }
            return Rueckmeldung;
        }
private Boolean change(String SQL, SqlConnection con)
        {
            Boolean Rueckmeldung = false;
            SqlCommand cmd = new SqlCommand(SQL, con);
            Boolean conWarClosed = false;
            try
            {
                cmd.Parameters.Add(Parameter("@NR_IMMOBILIE", SqlDbType.Int, NR_IMMOBILIE));
				...
                cmd.Parameters.Add(Parameter("@NR", SqlDbType.Int, NR));
                conWarClosed = conOpen(con);
                cmd.ExecuteNonQuery();
                Rueckmeldung = true;
            }
            catch (Exception ex)
            {
                Rueckmeldung = false;
                Debug.Print(ex.Message);
                throw;
            }
            finally
            {
                conClose(conWarClosed, con);
            }
            return Rueckmeldung;
        }	
private Boolean change(String SQL, OleDbConnection con)
        {
            Boolean Rueckmeldung = false;
            OleDbCommand cmd = new OleDbCommand(SQL, con);
            Boolean conWarClosed = false;
            try
            {
                cmd.Parameters.Add(Parameter("@NR_IMMOBILIE", OleDbType.Integer, NR_IMMOBILIE));
				..
                cmd.Parameters.Add(Parameter("@NR", OleDbType.Integer, NR));
                conWarClosed = conOpen(con);
                cmd.ExecuteNonQuery();
                Rueckmeldung = true;
            }
            catch (Exception ex)
            {
                Rueckmeldung = false;
                Debug.Print(ex.Message);
                throw;
            }
            finally
            {
                conClose(conWarClosed, con);
            }
            return Rueckmeldung;
        }		
private Boolean change(String SQL, SqlCeConnection con, FIMANMandant LMandant)
        {
            Boolean Rueckmeldung = false;
            SqlCeCommand cmd = new SqlCeCommand(SQL, con);
            Boolean conWarClosed = false;
            try
            {
                cmd.Parameters.Add(Parameter("@NR_IMMOBILIE",  NR_IMMOBILIE));
				...
                cmd.Parameters.Add(Parameter("@NR", NR));
                conWarClosed = conOpen(con);
                cmd.ExecuteNonQuery();
                Rueckmeldung = true;
            }
            catch (Exception ex)
            {
                Rueckmeldung = false;
                Debug.Print(ex.Message);
                throw;
            }
            finally
            {
                conClose(conWarClosed, con);
            }
            return Rueckmeldung;
        }		

21.05.2017 - 16:58 Uhr

Hallo,

ich habe eine kleine Universal App für Windows 10 IoT (auf einem Raspberry Pi). Gibt es für die Universal App auch ein Timer Control, wie in Windows Forms ?

Tschau
Martin

11.05.2017 - 14:11 Uhr

Hallo,
wir haben einige Kollegen, die nutzen längere Dateinamen, länger Pfadnamen und verschachteln das recht tief.
Nun gehen die netten Kollegen her, erstellen das als Archiv, etc. und schieben es noch tiefer irgendwo rein.
Ruckzuck kommt man die Grenzen von runde 255 Zeichen, so daß die Dateien nicht mehr am Ende gelesen werden können.
Ich weiß, diese Anwender gehören geprügelt, gesteinigt, sind selber schuld, etc. Aber das ist keine Lösung.

Gibt es Tools, um sowas zu verhindern oder gibt es Programmiertipps, wie man sowas verhindern kann ?
Es könnte durchaus ein Tool geben, das lokal installiert werden kann, um sowas zu verhinden. Wer kann das Tipps zur weiteren Recherche geben ?
Könnte man sowas selber programmieren, inc C#/VB.net oder einer anderen Programmiersprache ?

Es geht primär noch um Win7, Win10 kommt irgendwann in der Zukunft ...

Tschau
Martin

04.01.2017 - 16:46 Uhr

also, hätte ich die passende Lösung gefunden, hätte ich nicht gefragt.

Wie sollte es besser gehen ?
Mein Problem ist, daß ich Nodes mit values verwende, deren Childes geändert werden sollen. Dazu habe ich nirgends etwas passendes gefunden.
Daher nachgefragt.

Habe jetzt eine Lösung gebaut, aber ob diese gut ist ?