Laden...

Forenbeiträge von Grimmbizkit Ingesamt 310 Beiträge

16.04.2024 - 10:32 Uhr

Keine Ahnung wieso, aber nun geht es...

Da mit dem Refit werde ich mir mal ansehen.

Danke für die Hilfe und Tipps

var updateInfo = new TruckUpdate() { licensePlate = "01-TEU-2", timestamp = 1708680229000, type = "Noool" };

String requestURL = "https://xxx";

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Authorization", "ApiKey ???-???-???-???");

    String json = JsonConvert.SerializeObject(updateInfo);

    var contentToSend = new StringContent(json, Encoding.UTF8, "application/json");

    var response = client.PostAsync(requestURL, contentToSend).GetAwaiter().GetResult();

    var responseContent = response.Content;

    String content = responseContent.ReadAsStringAsync().GetAwaiter().GetResult();

    if (response.IsSuccessStatusCode)
    {
    }
    else
    {
    }
}
16.04.2024 - 09:35 Uhr

Morgen zusammen,

ich möchte gerne ein Objekt als JSON an eine API senden.

Teste ich das mit dem Programm Insomnia funktioniert alles auch soweit. Mit meinem Code bekomme ich immer nur ein 400 BadRequest zurück. Wenn ich einen GET mache, funktioniert alles.

Hoffe mir kann da jemand einen Tipp geben.

Gruß Simon

internal Boolean SendTruckUpdate(SolusoObjects.TruckUpdate updateInfo)
{
    String requestURL = "https://xxx";

    using (var client = new HttpClient())
    {
        StringContent contentToSend = new StringContent(JsonConvert.SerializeObject(updateInfo), Encoding.UTF8, "application/json");
        contentToSend.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");

        client.DefaultRequestHeaders.Add("Authorization", "ApiKey ???-???-???-???");
        var response = client.PostAsync(requestURL, contentToSend).GetAwaiter().GetResult();

        var responseContent = response.Content;

        String content = responseContent.ReadAsStringAsync().GetAwaiter().GetResult();

        if (response.StatusCode == HttpStatusCode.OK)
        {
            return true;
        }
    }
    return false;
}
30.11.2021 - 22:10 Uhr

Verwendetes Datenbanksystem: SQL

Abend zusammen,

ich habe folgenden Code um in einer SQL Tabelle eine Datensatz (ca 50 Spalten) einzufügen bzw zur prüfen ob der Eintrag vorhanden ist und ein Update zu machen.
Nur bei 150.000 Datensätzen, dauert es eine GANZE Zeit...

Wo könnte ich das ganze optimieren?


            String query = "SELECT COUNT(id) FROM data_" + idUser.ToString().Remove(0, 2) + " WHERE timeslot = @pTimeSlot AND [date] = @pDate";

            SqlCommand sqlCmd = new SqlCommand(query, cnSql);
            sqlCmd.Parameters.AddWithValue("@pTimeSlot", timeSlot);
            sqlCmd.Parameters.AddWithValue("@pDate", date.Date);
            Int32 r = Convert.ToInt32(sqlCmd.ExecuteScalar());

            if (Convert.ToInt32(sqlCmd.ExecuteScalar()) == 1)
            {
                // UPDATE
                query = "UPDATE data_" + idUser.ToString().Remove(0, 2) + " SET [" + dvd.ValueFieldID.ToString("D3") + "_value] = @pValue, [" + dvd.ValueFieldID.ToString("D3") + "_textid] = @pTextID WHERE timeslot = @pTimeSlot AND date = @pDate";
                sqlCmd = new SqlCommand(query, cnSql);
                sqlCmd.Parameters.AddWithValue("@pTimeSlot", timeSlot);
                sqlCmd.Parameters.AddWithValue("@pDate", date.Date);
                sqlCmd.Parameters.AddWithValue("@pValue", dataValue);
                sqlCmd.Parameters.AddWithValue("@pTextID", dvd.TextID);
                Int32 res = sqlCmd.ExecuteNonQuery();
                recordsUpdate++;
            }
            else
            {
                // INSERT
                query = "INSERT INTO data_" + idUser.ToString().Remove(0, 2) +" ([date], [timeslot], ["+  dvd.ValueFieldID.ToString("D3") + "_value], [" + dvd.ValueFieldID.ToString("D3") + "_textid]) VALUES (@pDate, @pTimeSlot, @pValue, @pTextID)";
                sqlCmd = new SqlCommand(query, cnSql);
                sqlCmd.Parameters.AddWithValue("@pTimeSlot", timeSlot);
                sqlCmd.Parameters.AddWithValue("@pDate", date.Date);
                sqlCmd.Parameters.AddWithValue("@pValue", dataValue);
                sqlCmd.Parameters.AddWithValue("@pTextID", dvd.TextID);
                Int32 res = sqlCmd.ExecuteNonQuery();
                recordsImport++;
            }
            cnSql.Close();

Hoffe ihr habt dort einige Tipps für mich

21.10.2021 - 12:24 Uhr

Hi,

ich habe es nun so selber gelöst:


        public Int32 GetTimeSlot(DateTime time, Int32 slotMinutes)
        {
            DateTime time2 = DateTime.Today;

            for (int i = 0; i < (1440 / slotMinutes); i++)
            {
                //System.Console.WriteLine("Timeslot (" + time2 + " -> " +time2.AddMinutes(slotMinutes) + ")");

                if ((time.Ticks >= time2.Ticks) && (time.Ticks < time2.AddMinutes(slotMinutes).Ticks))
                {
                    //System.Console.WriteLine("TIMESLOT " + i + " -> " + time);
                    return i;
                }

                time2 = time2.AddMinutes(slotMinutes);
            }
            return -1;
        }

Mal schauen was ihr dazu sagt?

21.10.2021 - 11:04 Uhr

Hallo zusammen,

leider bin ich bei der Suche nicht fündig geworden und bevor ich das Rad neu erfinde, dachte ich frage mal kurz nach.

Hat jemand schon mal einen DatumZeit (hier nur die Zeit) in einen TimeSlot(Int) konvertiert?

Also man sagt


GetTimeSlot(DateTime time, Int32 slotMinutes)
{
   // time = Datum und/oder Zeit für die Berechnung
   // slotMinutes = Minuten die ein Slot groß ist.
}

Das man wenn man die Aktuelle Uhrzeit übergibt dann eine Zahl bekommt welcher Slot das vom Start des Datum ist.
Im Grunde
GetTimeSlot(DateTime.Now, 10) // hier mal 9:36:00 und 10 Minuten Slots
Das würde mir dann 58 zurückgeben

Vielen Dank falls mir jemand helfen kann.

Gruß Simon

30.06.2021 - 10:54 Uhr

Hallo zusammen,

ich bin auf der Suche nach einem "Plugin" (so nenne ich es mal um eine Verbindung zu einem FTPS-Server aufzubauen. Derzeit nutze ich FluentFTP, aber hier funktioniert es nur im Framework 4.5 und nicht in 4.0
Ich habe ein altes System (Windows Server 2003R2) wo ich kein 4.5 Framework installieren kann.

Gibt es da eine Möglichkeit FTPS und Framework 4.0?

Grüße Simon

05.05.2020 - 15:25 Uhr

Hallo,

ich bin (mehr oder weniger auf der Suche nach eine "fertigen" Klassen für die FTP Komminukation.
Sprich: Upload, Download, Löschen, Verzeichnisse erstellen und Inhalte von Verzeichnissen abrufen.

Das ganze am liebsten Asynchron.

Gibt es da schon fertige Dinge oder muss ich mir mittels FtpWebRequest / FtpWebResponse das selber zusammenbauen?

Dachte ich Frage mal bevor ich die x-te Version davon baue.

Grüße Simon

27.11.2019 - 07:56 Uhr

Eine Frage hätte ich noch.

Ich muss ja meine Daten an eine Webseite senden, dort habe ich folgende Möglichkeiten

  1. REST
  2. HTTP POST request mit XML Body
  3. SOAP (XML)

wäre da REST auch die beste / zukunftssicherste Lösung?

26.11.2019 - 22:10 Uhr

Hallo Abt

danke für deine Tip.
Hast du evtl eine gute Anleitung oder Tutorial für den HttpClient?
Leider findet man dazu bei den Suchmaschinen ja nicht gerade wenig 😉

Und was ist "Refit" ?

Gruß Simon

26.11.2019 - 20:05 Uhr

Abend,

ich möchte gerne Daten (JSON) an eine REST API schicken.
Laut Anleitung soll ich im Header einen ApiKey und eine ApplicationElementId mitschicken.
Aber egal ob mit den Daten oder ohne, ich bekomme immer: "401 Nicht autorisiert"


            var request = (HttpWebRequest)WebRequest.Create(txtHostURL.Text);
            
            var data = Encoding.ASCII.GetBytes(ultimoRest.GetJsonFromObject(dataObj));

            request.Headers.Add("ApiKey", txtApiKey.Text);
            request.Headers.Add("ApplicationElementId", txtAppElementId.Text);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = data.Length;

            using (var stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            try
            {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            }
            catch (System.Net.WebException webEx)
            {
                txtResponse.Text = webEx.ToString();
            }

Evtl hat ja jemand eine Idee wo da der Fehler liegt.
Danke schon mal im Vorraus

Gruß Simon

30.08.2019 - 08:23 Uhr

Morgen zusammen,

ich hoffe die Frage ist hier richtig.
Ich möchte gerne Anhand einer Trendkurve einen entsprechenden Wert ermitteln/berechnen. Im Anhang findet ihr dazu ein Bild.
Ich habe quasi eine Prozentzahl (z.B. 31,5 %) und würde nun gerne wissen wie vielen t/h das entsprechen würde, anhand meiner vorhandenen Werte.

Leider reichen dafür meine Mathe-Kenntnisse nicht ganz aus und ich denke das ich hier auch nicht das Rad neu erfinden muss.

Ich hoffe ihr könnt mir da etwas helfen.

Danke jetzt schon einmal
Gruß Simon

19.03.2019 - 11:30 Uhr

Danke für die Antworten.

Leider ist das Thema für mich komplett neu mit dem "Zeichnen".

Ich würde mir quasi (mit Paint oder so) 5 farbige Felder vorbereiten.
Und dann in einer PictureBox diese entsprechend einfügen.
X0Y0 = Grün
X1Y0 = Grün
X2Y0 = Rot

Habe ich das schon soweit richtig verstanden?

19.03.2019 - 08:18 Uhr

Hallo,

ich hoffe meine Frage ist hier richtig.
Ich habe zu einem Motor alle 5 Minuten einen Mittelwert.
Dieses möchte ich nun Grafisch (mittels Farben) darstellen, ob die Auslastung gut ist oder nicht.

Meine Frage wäre wie man sowas am besten realisieren könnte (evtl hat jemand dazu schon Erfahrungen gesammelt) PictureBox, DataGridView oder noch anders. Oder gibt es sowas schon als fertigen Plugin.

Ich habe für den Zeitraum 06:00-22:00 und 31 Tagen im Monat dann sehr viele Elemente nötig, was die GUI nicht schneller werden lässt.

In Anhang ein Screenshot, wie es derzeit mittels Excel gelöst wird.

Hoffe jemand kann mir da einen Tipp geben.

Gruß Simon

08.02.2019 - 11:10 Uhr

Das der Client nicht erreichbar ist, liegt an der derzeitigen "Arbeitsweise" des Programm's.
Der Server kennt die IP's der Clients und baut eine Verbindung dorthin auf. Nicht der Client baut eine Verbindung zum Server.

Bei einer Verbindung zwischen Client und Server meldet sich der Client (an dem ein RFID Scanner angeschlossen ist bei Server (ich habe eine ID erkannt) und alles weitere macht der Server.

Eine Überlegung war sogar zwei eigenständige Programme zu erstellen, die nicht abhängig von einer Kommunikation zu erstellen. Da ich nur den Scanner lesen muss und eine Sql-Datenbank abfragen muss.

Grüße

07.02.2019 - 18:40 Uhr

Guten Abend zusammen,

ich habe mal ein paar kleinere Fragen.

Ich habe ein altes Programm (mit C#, 1x Server, 2x Client) in dem "Server" steckt die Intelligenz. Die Clients habe hauptsächlich nur eine Software, welche vom Server gesagt bekommt Zeige das an, mache das...

Nun würde ich diese Software gerne ersetzen, da die Hardware ist zu alt und auch die Software ist nicht für meine heutigen Anforderungen ausgelegt.

Nun meine Fragen:

  1. Welche Art der Kommunikation ist heute Stand der Dinge? Immer noch TCP-Client, oder TCP-Channel? oder noch was anderes?
  2. Multi-Tasking sollte es können, also 1 Client ist nicht erreichbar, sollte nicht die Leistung des anderen Beeinträchtigen Geschwindigkeit.
  3. Automatischer Reconnect oder sowas.
  4. Gibt es auch was, für Linux, Windows & Android funktioniert?

Oder anders gesagt: Wie würdet ihr dieses Thema angehen und (zukunftssicher) lösen?

Bin für jede Anregung oder Tipp dankbar.

25.10.2018 - 09:29 Uhr

Morgen,

ich habe mich nun mit dem Thema nochmals befasst, und festgestellt, das dieses Problem bei VS2017 und CrystalReports (glaube Version 13.??) nun behoben ist. Dort kann ich per Code den Drucker (welcher nach dem klicken auf den Drucker Button angezeigt wird) verändern.

Bei VS2005 scheint das nicht zu funktionieren.



            crViewer.ReportSource = crReport;

            if (ReportFileName.StartsWith("Stat"))
                crReport.PrintOptions.PrinterName = Program.oUserSetup.GetString("StatPrinterName");
            else
                crReport.PrintOptions.PrinterName = Program.oUserSetup.GetString("LfsPrinterName");

            if (Program.oUserSetup.LfsPaperId > 0)
                crReport.PrintOptions.PaperSize = (CrystalDecisions.Shared.PaperSize)Program.oUserSetup.LfsPaperId;
            else
                crReport.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA4;

04.08.2017 - 13:56 Uhr

Danke für die Infos

Wie ist das den von der Performance her?
Gibt es da Unterschiede?

Da ich z.B. von Geräten Daten auslese und diese in einer Anwendung darstellen möchte. Das sollte dann JustInTime gehen.

Gerät wird von einem Dienst (Client) alle 250ms ausgelesen, welcher diese Werte an den Dienst (Server) sendet. Nun kann sich ein anderes Programm an mehreren PC's auf den Dienst (Server) verbinden und das in einem Formular anzeigen.

04.08.2017 - 13:44 Uhr

Hallo zusammen,

ich habe mal eine Frage bzw brauche ich eine kleine Entscheidungshilfe.

Ich möchte gerne einen Dienst erstellen welche als zentraler Punkt für den Datenaustausch zwischen verschiedenen Programmen dienen soll. Hier sollen sich dann die Programme drauf verbinden.
Es werden hauptsächlich Texte (Strings) ausgetauscht, evtl mal auch Objekte.

Um das ganze zu realisieren habe ich mich für Remoting entschieden.

Nun zu meinen Fragen:

  1. Läuft das auch unter Linux mit Mono?
  2. Kann der Remoting-Server auch mehrere Clients verwalten?
  3. Gibt es die Möglichkeit zu unterscheiden, also daten gibt es immer nur aktuell und einmal eine Art Queue?

Ist sowas machbar, oder doch was anderes als Remoting?
IPC?

Danke für eure Hilfe und Tipps
Gruß Simon

08.06.2017 - 20:09 Uhr

Abend,

ich habe in einem Programm mehrere Stelle, wo ich eine Funktion aufrufe womit ich in Variablen einen Text schreibe, in der entsprechenden Sprache.


        private void SetSprache(Int32 Nr)
        {
            if (Nr == 0) // DE
            {
                return;
            }
            else if (Nr == 1) // NL
            {
                btnAbbruch.Text = "Escape";
                btnWeiter.Text = "Bevestigen";
            }
        }

Deutsch ist halt der Standard und alles andere wird angepasst.
Nur wie mache ich das mit Sprachen, wie Russich oder Bulgarisch, die haben ja ganz andere Zeichen als Normal.

Auslagerung eine vorhandene SQL Datenbank auslagern:
textid, ger, nl, ru
1, Bestätigung, Bevestigen, onegcsehrgisnih (Sorry wenn ich das gerade nicht weiß)
In eine Textdatei?

Was wäre die beste Möglichkeit?

Im Code wäre am schnellsten umzusetzen für mich.

Bin für jeden Tipp dankbar.

Gruß Simon

23.02.2017 - 22:09 Uhr

Abend,

Ich würde gerne eine kleine App erstellen und da ich die meiste Erfahrung in C# habe würde ich das gerne damit machen. Aber was brauche ich für den Anfang?

Ich benötige eine App die mal auf android und iOS läuft
Und sie sollte mit einer Datenbank komunizieren.

Diese soll auf eine raspberry pi liegen (oder was anderes mit Linux)

Hoffe ihr könnt mir da ein paar Start Tipps geben.
Geht das mit dem VS?

Danke schon mal

Gruß simon

17.08.2016 - 20:52 Uhr

Abend an alle,

Ich stehe vor folgender Aufgabe:

Ich habe ein Programm, welche eine "modul" ausführt.
Beispielsweise:
Variablen:
Sql Verbindung
Konfiguration als XML

Methoden:
Start
Loop
Stopp

Und dann noch viel eigenes in dem Modul selber.

Nun ist es so das die Abläufe in den Programm teilweise sich leicht unterscheiden, teilweise stark.

Daher würde ich diese Abläufe gerne in eine dll auslagern und diese dann entsprechend einer Konfiguration zur Laufzeit des Programm laden.

Leider bin ich da irgendwie zu doof für, oder finde bei Google nicht den richtigen eintrag/Suchbegriff

Hoffe jemand kann mir da wieder etwas auf den rechten Weg helfen.

01.06.2016 - 07:40 Uhr

Morgen,

Der Fehler lautet:
"Das Dokument verfügt bereits über einen 'DocumentElemte'-Knoten"

Als kleiner Hinweis, so sieht in etwa die XML aus:


<Configuration>
    <SprachNr>0</SprachNr>
    <HvsControlHost prio="1">193.169.100.145</HvsControlHost>
    <Anmeldung_Delete>True</Anmeldung_Delete>
    <HvsControl>
        <ModulConfig>
            <Modul Active="False" Instance="1" Name="CardScan">
                <IP>10.24.5.199</IP>
                <Port>2112</Port>
                <Scanner_Typ>RFU630</Scanner_Typ>
		<Scanner_ID>1</Scanner_ID>
            </Modul>
        </ModulConfig>
    </HvsControl>
</Configuration>

Und der Bereich <Modul Active=......... soll kopiert/Dupliziert werden (aus Instance dann "2") und in die Xml Schreiben.

31.05.2016 - 20:39 Uhr

Abend zusammen,

gibt es eine Möglichkeit, das ich eine XmlNode als Object aus einem XmlDocument auslesen, dann Clone und wieder einfüge?

Folgende funktioniert bei mir nicht 😦


// Document erstellen/laden
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("test.xml");

// Node per XPath lesen
XmlNode node = xmlDoc.SelectSingleNode(String.Format("/Configuration/HvsControl/ModulConfig/Modul[@Name='{0}'][@Instance='{1}']", modulName, instance));

// Node duplizieren
XmlNode newNode = node.Clone();

// Anpassen des Inhalt
newNode.Attributes["Name"].InnerText = modName;
newNode.Attributes["Instance"].InnerText = modInstance.ToString();
newNode.Attributes["Active"].InnerText = "False";
newNode["IP"].InnerText = "0.0.0.0";
newNode["Port"].InnerText = "1111";
newNode["Scanner_ID"].InnerText = "";
newNode["Scanner_Typ"].InnerText = "";

// Hier passiert der Fehler
xmlDoc.AppendChild(newNode);

Habt ihr evtl eine Ahnung wieso?

Grüße Simon

20.04.2016 - 15:12 Uhr

Das Pooling ist wohl beim Copy&Paste entfallen, habe ich drin.

Ehrlich gesagt verliere ich so langsam den kompletten überblick 😦

20.04.2016 - 14:50 Uhr

@Abt

So läuft der Code bei mir.


    public interface IMyDbProvider
    {
        IDbConnection GetConnection();
    }
    
    public class MyMssqlProvider : IMyDbProvider
    {
        String connectionString;

        public MyMssqlProvider(string _connectionString) // Dependency Injection!
        {
            connectionString = _connectionString;
        }

        IDbConnection IMyDbProvider.GetConnection()
        {
            return new SqlConnection(connectionString);
        }
    }

Und der Using aufruf ist wohl auch Suboptimal:


using (System.Data.SqlClient.SqlConnection conn = (System.Data.SqlClient.SqlConnection) sql.GetConnection())
            {
                conn.Open();
                ...
            }

in der Klasse dann:


// DIESER CODE
        public System.Data.IDbConnection GetConnection()
        {
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("Server=127.0.0.1;Database=xxxxxxxxxx;User Id=sa;Password=xxxxxxxxxx;Pooling=false;");
            return conn;
        }
// STATT DIESEM
        public System.Data.SqlClient.SqlConnection GetSqlConnection()
        {
            //GC.Collect();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("Server=127.0.0.1;Database=xxxxxxxxxx;User Id=sa;Password=xxxxxxxx;Pooling=false;");
            return conn;
            
            //conn.Open();

            //if (conn.State != System.Data.ConnectionState.Open)
            //    throw new Exception("ConnectionState = " + conn.State.ToString());

            //return (conn);
        }

20.04.2016 - 14:24 Uhr

@Coffeebean:

this.sql
ist nur eine Klasse damit ich die SqlBefehle nur einmal schreibe.


    public class MSSQL
    {
        public MSSQL()
        {

        }

        public System.Data.SqlClient.SqlConnection GetSqlConnection()
        {
            //GC.Collect();
            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("Server=127.0.0.1;Database=...;");

            //conn.Open();
            return (conn);
        }
    }

20.04.2016 - 14:07 Uhr

@ Abt

Ohne das GC.Collect() wird es ehr schlimmer, der gleiche Fehler kommt direkt. Nach 2-3 Aufrufen

20.04.2016 - 13:48 Uhr

@Palin
Der ctahc-Block ist normal mit einem Rollback gefüllt, habe ich hier nur weggelassen

20.04.2016 - 13:43 Uhr

Hallo Abt,

Pooling aktiviert? -> Wo?

Was ist das genau, Repository Pattern und Single Responsibility?

Die Methode baut eine neue Verbindung auf, weil ich diese von verschiedenen Mehtoden nutze und der Code so nur einmal habe. Auch weil ich während ich mit einem DataReader arbeite neue Daten abfragen muss. Oder gibt es da eine bessere Lösung?

Hier ein Beispiel was ich meine:


Responses.StKunde kunde = null;

using (System.Data.SqlClient.SqlConnection conn = this.sql.GetSqlConnection())
{
    System.Data.SqlClient.SqlCommand cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT * FROM StKunden WHERE isdeleted = 0 AND KdNr = @pKdNr";
    cmd.Parameters.AddWithValue("@pKdNr", kdNr);

    System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader();
                
    while (reader.Read())
    {
        kunde = new Responses.StKunde();

        for (Int32 indexCol = 0; indexCol < reader.FieldCount; indexCol++)
        {
            if (reader.IsDBNull(indexCol))
                continue;

            switch (reader.GetName(indexCol))
            {
                // STRING
                case "KdNr": kunde.KdNr = reader.GetString(indexCol); break;
                case "Name1": kunde.Name1 = reader.GetString(indexCol); break;
                //....
                case "AbsatzArtNr": kunde.AbsatzArt = this.GetAbsatzArt(kunde.AbsatzArtNr); break;
		//
		// REST DER METHODE...


20.04.2016 - 13:26 Uhr

Hi,

Also die Verbindung hole ich mir hierher


public System.Data.SqlClient.SqlConnection GetSqlConnection()
{
    GC.Collect();
    System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("Server=127.0.0.1;Database=.....");
    conn.Open();
    return (conn);
}

Diese Methode nutze ich dann wie folgt:


public Int32 InsertLieferschein(Responses.Lieferschein lfs, MSSQL.NummernKreis nrKreis)
{
    System.Guid guId = System.Guid.NewGuid();
    using (System.Data.SqlClient.SqlConnection conn = this.sql.GetSqlConnection())
    {
        System.Data.SqlClient.SqlCommand cmd1 = null;
        System.Data.SqlClient.SqlCommand cmd2 = null;
        cmd1 = conn.CreateCommand();
        cmd1.CommandText = "INSERT INTO ...";
        cmd1.Parameters.AddWithValue("@pLf...",guId);
        // Rest des Befehl...

        cmd2 = conn.CreateCommand();
        cmd2.CommandText = "INSE....";
        cmd2.Parameters.AddWithValue("@pLf...",guId);
        // Rest des Befehl...

        System.Data.SqlClient.SqlTransaction transaction = null;
        try
        {
            transaction = conn.BeginTransaction(IsolationLevel.Serializable);

            cmd2.Transaction = transaction;
            cmd1.Transaction = transaction;

            cmd1.ExecuteNonQuery();
            cmd2.ExecuteNonQuery();

            transaction.Commit();

            return lfsNr;
        }
        catch (Exception ex)
        {
        }
    }
}

Aus meiner sich ok oder?

Danke schon mal für die Hilfe!

20.04.2016 - 11:44 Uhr

Moin zusammen,
ich habe mal eine Frage zum Thema Webservice unter Mono/Linux.

Kurz zum Problem:
Auf einer Linux VM läuft mein Webservice (er führt Datenbank befehle aus).

Aber zwischendurch (keine regelmäßigen Abstände) bekomme ich die Exception:> Fehlermeldung:

System.ServiceModel.FaultException: System.Data.SqlClient.SqlException: Server closed the connection. —-> Mono.Data.Tds.Protocol.TdsInternalException: Server closed the connection. —-> System.IO.IOException: Connection lost
at Mono.Data.Tds.Protocol.TdsComm.GetPhysicalPacketHeader () [0x00031] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs:630
at Mono.Data.Tds.Protocol.TdsComm.GetPhysicalPacket () [0x00000] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs:604
at Mono.Data.Tds.Protocol.TdsComm.GetByte () [0x00011] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsComm.cs:477
at Mono.Data.Tds.Protocol.Tds.ProcessSubPacket () [0x00000] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs:1767
at Mono.Data.Tds.Protocol.Tds.NextResult () [0x0004a] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs:619
at Mono.Data.Tds.Protocol.Tds.SkipToEnd () [0x00005] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs:692
—- End of inner exception stack trace —-
at Mono.Data.Tds.Protocol.Tds.SkipToEnd () [0x0001d] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs:695
at Mono.Data.Tds.Protocol.Tds70.ExecRPC (TdsRpcProcId rpcId, System.String sql, Mono.Data.Tds.TdsMetaParameterCollection parameters, Int32 timeout, Boolean wantResults) [0x000ad] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds70.cs:487
at Mono.Data.Tds.Protocol.Tds80.Execute (System.String commandText, Mono.Data.Tds.TdsMetaParameterCollection parameters, Int32 timeout, Boolean wantResults) [0x0003e] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds80.cs:229
at System.Data.SqlClient.SqlCommand.Execute (Boolean wantResults) [0x0020b] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/System.Data/System.Data.SqlClient/SqlCommand.cs:536
—- End of inner exception stack trace —-
at System.Data.SqlClient.SqlCommand.Execute (Boolean wantResults) [0x00252] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/System.Data/System.Data.SqlClient/SqlCommand.cs:542
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery () [0x00015] in /var/tmp/portage/dev-lang/mono-2.10.9-r2/work/mono-2.10.9/mcs/class/System.Data/System.Data.SqlClient/SqlCommand.cs:571
at HvsWerkApplAPI.Service1.InsertLieferschein (HvsWerkApplAPI.Responses.Lieferschein lfs, NummernKreis nrKreis) [0x00cce] in c:\SVN\Hvs\HVS.ng\WebServices\HvsWerkApplAPI\HvsWerkApplAPI\Service1.asmx.cs:4220

Nach einem öffnen der "Webseite" des Webservice geht es wieder.
Als wenn der Webservice in eine Art Standby Modus geht.

Webservice und Datenbank liegen auf dem gleichen PC

16.03.2016 - 21:04 Uhr

Abend zusammen,

ich möchte gerne mit meinen Programm Reports bereitstellen.
Nun sollte es aber so sein das der Benutzer später die Reports für sich anpassen müsste.

Geht das direkt mit C# (VS2012) oder müsste man da auf Anbieter wie DevEx..... zurückgreifen?

Evtl hat jemand da schon erfahrungen mit und könnte mir da ein paar Tipps geben.

Gruß Simon

17.11.2015 - 22:36 Uhr

Hallo,

es ist schon spät, und so langsam sehe ich den Wald vor Bäumen nicht mehr, aber evtl kann mir jemand noch einen Tipp geben.

ich habe 2 Objekte:


class GpsSimple
{
	public String Name="";
	public GpsSimple()
	{
	}
}

class GpsExpert : Simple
{
	public String Koordinaten="";
	public GpsSimple()
	{
	}
}

Somit hat mein Objekt GpsExpert ja 2 Variablen (Name & Koordinaten)

Wie Caste ich ein GpsSimple -> GpsExpert?

Danke für jede Hilfe.

Gruß Simon

05.06.2015 - 10:12 Uhr

Das Problem was ich habe ist, das ich bei dem Aufruf meine Klasse:


.AddEntry("/Configuration/LfsExport/ExportFolder", @"C:\Daten");

Immer einen Fehler bekomme, das ich kein "/" eingeben darf.

Die Frage ist ja, kann ich das so umsetzen, oder muss ich das komplette XmlDocument durchlaufen und gucken wo immer der passende Node ist und dann weitersuchen?

04.06.2015 - 16:10 Uhr

verwendetes Datenbanksystem: XML

Hallo zusammen,

ich habe eine XML Datei in der Konfigurationen gespeichert sind.
Nun soll meine Anwendung dort auch neue Konfigurationen speichern können.

Meine Xml-Datei sieht so aus:


<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <LfsExport>
    <ExportFileName>tag.asc</ExportFileName>
  </LfsExport>
</Configuration>

Jetzt möchte ich gerne dort eine Eintrag hinzufügen (auch mit Attributen möglich)
Name: ExportFolder
Wert: C:\Daten

Der Aufruf soll so aussehen:


public Boolean AddEntry(String xmlPath, String defaultValue)
public Boolean AddEntry(String xmlPath, String defaultValue, AttributeObject[] attrObj)

Bei xmlPath würde ich dann gerne die "Position" angeben:
"/Configuration/LfsExport/ExportFolder"

Wenn die Daten gespeichert sind soll das ganze etwa so aussehen:


<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <LfsExport>
    <ExportFileName>tag.asc</ExportFileName>
    <ExportFolder>C:\Daten</ExportFolder>
    <MenuItem entry="4-1">True</MenuItem>
  </LfsExport>
</Configuration>

Ich hoffe ihr könnt mir da ein paar Tipps geben, da ich auch dem Bereich XML noch recht neu bin. Evtl habt ihr ja auch schon die genaue Lösung 😉

Danke schon mal und Grüße
Simon

11.03.2015 - 09:19 Uhr

Morgen an alle,

ich würde gerne die Spalten in meinem Grid ein/ausblenden. Dies wollte ich mittels einem KontextMenü realisieren.
Rechtsklick ins Grid und dann einfach die spalten auswählen.

Hat jemand sowas schon mal realisiert und kann mir da ein paar Tipps geben?

Gruß Simon

06.03.2015 - 08:04 Uhr

Morgen Zusammen,

ich habe den PC-Namen einfach mit an die "toShuffle" angefügt.
Gebe ich diesen String auch mit beim CheckKey an ist alles ok.

Nun habe ich aber noch ein kleines Problem.

Ich würde gerne eine Zahl (Lizenzgröße) mit in den Key packen und diesen später auch wieder auslesen. Kann ich überhaupt Werte später wieder auslesen?

Gruß Simon

05.03.2015 - 09:50 Uhr

Danke herbivore,

aber ich möchte diesen String auch bei CheckKey nutzen, als zusätzliche Kontrolle.

Da finde ich irgendwie nicht den Ansatz.

Gruß Simon

04.03.2015 - 11:30 Uhr

Hallo,

ich finde diese Klasse echt super.
Allerdings habe ich eine kleine Anregung bzw Frage.

Ich würde gerne einen String mit für die Generierung hinzuziehen.

Als Beispiel den PC-Name.

Ist sowas möglich und wie?

Gruß Simon

26.02.2015 - 22:51 Uhr

Es handelt sich um die backgroundworker klasse.

Aber aus dem DoWork-Event bzw Complet Event bekomme ich die exception nicht "raus"?

Gruß Simon

26.02.2015 - 10:06 Uhr

Morgen zusammen,

gibt es eine Möglichkeit eine Exception (die in einem Background auftritt) an die "Hauptanwendung" zu thrown?

Dort habe ich folgenden Code:


try
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new FormAppl());
}
catch (Exception ex)
{
    if (ex.GetType() == typeof(Classes.Config_UnknowName))
    {
        // IRGEDNWAS    
    }
}

Das sind ja 2 unterschiedliche Threads.
Geht sowas überhaupt?

Hoffe ihr könnt mir da helfen!

Gruß Simon

20.01.2015 - 09:47 Uhr

Danke für den Tipp,

ich habe es nun über den CloseReason so gelöst:


private void TestDialog_FormClosing(object sender, FormClosingEventArgs e)
{
    // Passwortabfrage nur beim Schließen durch Benutzer
    if (e.CloseReason == CloseReason.UserClosing)
    {
        Dialog_Exit dlgExit = new Dialog_Exit();
        dlgExit.ShowDialog();
        if (dlgExit.DialogResult != System.Windows.Forms.DialogResult.OK)
            e.Cancel = true;
    }
}

Wenn das Programm läuft, dann ist dies der Wert: WindowsShutDown

20.01.2015 - 09:29 Uhr

Hallo zusammen,

gibt es eine Möglichkeit beim Programm den Unterschied herauszufinden ob die Anwendung durch den Benutzer beendet wurde, oder ob Windows heruntergefahren wurde.

Ich möchte gerne das der Benutzer das Programm nur mit Eingabe eines Passwort die Anwendung beenden kann, wenn der PC heruntergefahren wird, soll sich das Programm allerdings ob "Probleme" schließen.

Habe bisher nur eine Abfrage im FormClosing-Event.

Hier ein Auszug des Code:



private void TestDialog_FormClosing(object sender, FormClosingEventArgs e)
{
    Dialog_Exit dlgExit = new Dialog_Exit();
    dlgExit.ShowDialog();  
    if (dlgExit.DialogResult != System.Windows.Forms.DialogResult.OK)
        e.Cancel = true;

        syncSql.Stop();
}

Hoffe ihr könnt mir da ein paar Tipps geben.

Gruß Simon

27.11.2014 - 21:50 Uhr

Abend zusammen,

Ich habe eine Frage, denn ich komme einfach nicht auf die Lösung bzw weiß nicht wonach ich suchen muss.

1 -> Funktion 1
2 -> Funktion 2
4 -> Funktion 3
8 -> Funktion 4

Nun möchte ich mit einer Zahl (in einer ConfigDatei) die Funktionen nutzen.
Beispiel
11 -> Funktionen 1,2 und 4
12 -> Funktionen 3 und 4
9 -> Funktion 1 und 4

Hoffe ihr könnt mir auf die Sprünge helfen

Gruß Simon

24.06.2014 - 19:51 Uhr

Danke, ich denke damit sollte ich was anfangen können

24.06.2014 - 19:46 Uhr

Ja,
es soll eine Art Logging sein. Ich muss die Daten nicht zwingend als XML haben, ich würde sie gerne direkt in die andere Tabelle schreiben, nur da weiß ich halt nicht wie.

Ich habe es bisher nur hinbekommen, das wenn sind bei einem UPDATE eine Zeile ändert, das ich dann eine Zähler im gleichen Datensatz erhöhe.

CRUD-Sache??
Repo??

Sorry aber sagt mir gerade nicht viel 😦

Ich möchte das halt alles ohne C# machen. Rein im Sql-Server.

Gruß Simon

24.06.2014 - 19:36 Uhr

Danke,

ich möchte halt den Inhalt alle Felder des Datensatz haben.
Dachte das geht per XML am einfachsten, oder liege ich da falsch?

Gruß Simon

24.06.2014 - 19:21 Uhr

verwendetes Datenbanksystem: MsSQL

Hallo Zusammen,

ich habe ein Problem, bzw weiß ich nicht wo/wie ich anfangen soll.

Ich habe einen MSSql-Server und mehrere Tabellen.
In den Tabellen habe ich immer eine Spalte (rowid -> uniqueidentifier) diese wird immer beim Insert automatisch gefüllt (newid()).
Da folgen weitere Felder (zb. Name, Plz usw...) diese können von Tabelle zu Tabelle unterschiedlich sein.

Nun möchte ich es eigentlich so haben (bei INSERT oder UPDATE) soll per Trigger die rowid + der Inhalt aller Felder in eine andere Tabelle geschrieben werden.

Diese Tabelle sollte so aussehen:


rowid -> uniqueidentifier
cmd   -> UPDATE, INSERT, DELETE
value -> Inhalt der Felder

Beim löschen würde nur die rowid reichen.

So nun ist mein Problem, wie ich das ganze anstelle. habe mal was von Serialisierung gehört bzw XML. Nur finde ich dazu nix, auch nicht bei Google. Oder ich weiß einfach nicht die entsprechenden Wörter um richtig zu suchen.

Hoffe ihr könnt mir da etwas unter die Arme greifen.

Gruß Simon

16.05.2014 - 07:12 Uhr

Morgen,

leider brauchte das einfügen von Using(...) keine besserung meines Problems

😦

Gruß Simon

15.05.2014 - 19:49 Uhr

Ich lasse mir da gerne Tipps geben.
Was hältst du denn für besser?

  • Connection zum Server einmal (zentral) öffnen/schließen oder pro Methode?
  • Kann ich meinen zweiten Code noch besser machen? Usings für den Command schon?

Gruß Simon