Laden...

Forenbeiträge von Suspekta Ingesamt 19 Beiträge

25.11.2021 - 14:50 Uhr

ohhhhhh man .... Danke
Wer lesen kann ich klar im Vorteil ^^
Super, Funkt jetzt

25.11.2021 - 14:35 Uhr

Hallo,

erstmal Danke für deine Antwort.
ich habe das mal umgebaut. Die Tabelle auf Bytea geändert und den Parameter angepasst. Jetzt kommt die Meldung das es die Spalte "p1" nicht gibt


  byte[] Value = File.ReadAllBytes(@"D:\karten.pdf");

 db.Connection_1();
 db.cmd1.Parameters.Add("p1", NpgsqlTypes.NpgsqlDbType.Bytea, Value.Length, "Byte").Value = Value;
 db.cmd1.CommandText = "insert into test (id, image) values (9,?p1)";
 db.cmd1.ExecuteNonQuery();

 db.cmd1.Dispose();
 db.con1.Close();

Eine Idee?

25.11.2021 - 14:08 Uhr

Hallo,

ich weiß nicht ob ich hier richtig bin aber ich habe ein Problem PDF-Datei in eine PostgreSQL DB zu speichern.
Wir stellen unser Programm gerade um von MySQL nach ProstgreSQL und von VB auf c#
In MySQL war das ziemlich einfach. Ich habe das Skipt aus dem VB nach C# umgeschrieben und herausgefunden, das PDF-Datei z.B. in den Typ "OID" gespeichert werden sollten

Hier mal das Scipt:


  System.IO.FileStream fs = new System.IO.FileStream(@"D:\karten.pdf", System.IO.FileMode.Open, System.IO.FileAccess.Read);
            byte[] Value = new byte[fs.Length];
            fs.Read(Value, 0, (int)fs.Length);
            fs.Close();


            NpgsqlConnection con1 = new NpgsqlConnection();
            NpgsqlCommand cmd1 = new NpgsqlCommand();

            con1.ConnectionString = connection_string;
            cmd1.Connection = con1;
            con1.Open();

            cmd1.Parameters.Add("p1", NpgsqlTypes.NpgsqlDbType.Oid, Value.Length, "Byte").Value = Value;
            cmd1.CommandText = "insert into test1 (id, image) values (9,?p1)";
            cmd1.ExecuteNonQuery();

            con1.Close();

Die DB-Verbindung etc ist alles OK. Das programm stoppt hier cmd1.ExecuteNonQuery(); mit der Meldung
System.InvalidCastException: "Can't write CLR type System.Byte[] with handler type UInt32Handler"

Kann hier jemand helfen?
Danke

02.06.2021 - 10:40 Uhr

Funktioniert ...

super Danke

02.06.2021 - 10:03 Uhr

Hallo Forum,

ich möchte gern bei allen Objekten in einer Form beim "Enter" die Hintergrundfarbe festlegen und bei "Leave" die Farbe wieder zurücksetzten
So kann der User besser sehen, in welchem Objekt er gerade steht.

Versuch


private void Form1_Load(object sender, EventArgs e)
        {
foreach (Control c in this.Controls)
            {
                c.Enter += Control_Enter;
            }
}
 private void Control_Enter(object sender, System.EventArgs e)
        {
            // wie kann ich hier das Objekt ansprechen welches die Hintergrundfarbe setzen soll
        }

Oder geht das so garnicht ?

Wäre für jeden Tipp dankbar

LG

26.05.2021 - 09:29 Uhr

Hallo,

danke für die Antwort.
An die DLLs im Programm habe ich garnicht gedacht, das werde ich noch versuchen
Nochmals Danke

26.05.2021 - 08:31 Uhr

Hallo Forum,

ist es wirklich richtig, das die einzelnen Runtimes nicht kompatible sind.
Ich habe ein Projekt das mit CR 13.0.25 erstellt wurde.
Wenn ich auf einem Rechner nun die Runtime 13.0.30 installiere also eine höhere Version
funktioniert das Programm / CR nicht mehr
Muss ich nun auch das Programm auf 13.0.30 hochsetzten ?

Kennt das jemand oder hat dafür eine Lösung

23.09.2020 - 14:22 Uhr

Ahhhh ... danke für den Hinweis!
Jetzt klappt alles
Danke

23.09.2020 - 13:50 Uhr

Hallo Forum,

gibt es eine Möglichkeit aus dem Code heraus eine PrintDialog für einen RDLC-Report anzuzeigen?

Ich habe einen Report in einem ReportViewer (BerichtViewer) der wird auch normal angezeigt also bis hier her alles gut. Ich kann den Report auch als PDF-Datei aus dem Code heraus exportieren auch das funktioniert.

Nur wenn ich nach dem PDF-Export den PrintDialog aufrufe kommt die Meldung:> Fehlermeldung:

System.InvalidOperationException: "Der Vorgang ist aufgrund des aktuellen Zustands des Objekts ungültig."

hier der Code:


  public static void Einfach_Drucken(DataTable table, string berichtdatei, Form parentform, bool mit_pdf, string pdf_name)
        {
            ReportDataSource dts = new ReportDataSource();
            dts.Name = "DataSet1";
            dts.Value = table;

            BerichtViewer rv_form = new BerichtViewer();
            rv_form.MdiParent = parentform;
            rv_form.Dock = DockStyle.Fill;
            rv_form.RV_Berichte.ProcessingMode = ProcessingMode.Local;
            rv_form.RV_Berichte.LocalReport.DataSources.Add(dts);
            rv_form.RV_Berichte.LocalReport.ReportPath = @".\Reports\" + berichtdatei;


            //Erzeugen einer PDF-Datei
            if (mit_pdf == true)
            {
                byte[] Bytes = rv_form.RV_Berichte.LocalReport.Render(format: "PDF", deviceInfo: "");

                using (FileStream stream = new FileStream(pdf_name, FileMode.Create))
                {
                    stream.Write(Bytes, 0, Bytes.Length);
                }
            }

            rv_form.RV_Berichte.RefreshReport();

            rv_form.RV_Berichte.PrintDialog();

        }

Ich wäre für Hilfe sehr dankbar...

02.09.2020 - 13:04 Uhr

Ja, dann hast Du einfach die Objekt-orientierte Programmierung noch nicht so ganz verstanden 😃

Ja das gebe ich zu ^^

Gut, dass wir mit C# ne ordentliche Sprache haben, die typisiert ist und sowas nicht einfach hinnimmt 😉
Hättest Dir einfach eine Basis-Klasse machen können, die die Textbox hat, und davon erben.

Darum versuche ich mir gerade C# beizubringen 😃

Vielleicht brauche ich doch mal einen Grundkurs ...

02.09.2020 - 12:51 Uhr

Hi,

erstmal danke für deine Antwort.
Die Textbox steht auf "Modifieres Public"

Ich habe in einem Projekt 15 WinForm, alle haben eine Textbox1 und weitere Elemente.
Jetzt möchte ich nicht für jede WinForm eine eigene Methode in der SL Klasse erstellen

In VB kann man z.B. die WinForm als Object übergeben und darüber auf die WinForm zugreifen (Der Compiler nimmt das bei VB einfach hin) und rennt erst bei Laufzeit auf einen Fehler, wenn die Form das angesprochene Objekt nicht hat.

Was mir eingefallen ist, man könnte den Namen des WinForm als String an die Methode übertragen und dann mit einem IF Anweisung arbeiten. Finde ich aber umständlich

Also was:


static class SL
{
public static void SetzenText (String name)
{
if (name=="Hauptform") 
{
HauptForm.textbox1.text="sdfsd";
}

if (name=="Form2") 
{
Form2.textbox1.text="sdfsd";
}

}
}

02.09.2020 - 12:28 Uhr

Hallo Forum,

ich entschuldige mich schon mal für die wahrscheinlich blöde Frage aber ist es möglich eine WinForm als Variable an eine andere Klasse zu übertragen und auf diese dann zugreifen zu können.

Also ich habe eine Form mit Namen Hauptform und eine Klasse SL mit einer Methode SetztenText:
Diese Variante funktioniert. Aufruf aus Hauptform


SL.SetztenText(this);

Klasse SL


static class SL
{
public static void SetztenText(Hauptform formular)
        {
            formular.textbox1.text="Hallo";
        }
}

...............................................
Das funktioniert nicht ...


static class SL
{
public static void SetztenText(Form formular)
        {
            formular.textbox1.text="Hallo";
        }
}

er kennt in formular die Textbox nicht ...

Der Grund für die Klasse und der Methode ist, dass ich diese aus verschieden WinForms aufrufen möchte. Es gibt also nicht nur die "HauptForm", sonder auch Form2, Form2 etc.

Danke

26.08.2020 - 11:51 Uhr

Ne... MVVM ist mir nicht bekannte .... werde mich damit mal auseinander setzten
Scheint ja genau das zu machen
Danke

26.08.2020 - 09:58 Uhr

Wenn ich ein zweites Mal auf Kundendaten klicke soll sich auch wieder eine neue Page im Control öffnen, dann hätte drei Pages im Control offen
Kundendaten1, Lieferantendaten1, Kundendaten2

Wie gesagt ähnlich eines Web-Browsers

26.08.2020 - 09:56 Uhr

Achso ... da war ich wohl falsch informiert
Also kann auch weiterhin beruhigt mit WinForms arbeiten

26.08.2020 - 09:21 Uhr

Hallo Forum,

ich habe bis lang alle Projekte in WinForms erstellt. Da es ein "Auslaufmodell" ist wollte ich mir mal WPF ansehen und habe festgestellt, dass es sowas wie "MDI" nicht gibt.
Ich habe mir überlegt die Pages in einem TabControl anzuzeigen (ähnlich einem Browser)

Ich habe zwei Pages

  • Kundendaten
  • Lieferantendaten

und die Mainform in der oben ein Menü gedockt ist und der "Inhaltsbereich" der TabContol ist

Wenn ich nun im Menü auf "Kunden" klicke, soll in dem TabControl die Page mit den Kundendaten angezeigt werden. Wenn ich auf Lieferanten klicke wird eine neue Page im Control erstellt, welche dann die Lieferantendaten anzeigt
In dem TabControl sind nun zwei Tabs offen einmal Kunden und einmal Lieferanten

Wäre das eine gute alternative zum MBI und wie kann man das in WPF umsetzten

Vielen Dank undLG

24.08.2020 - 14:39 Uhr

Hallo,

nochmal danke für deine Antwort. Ich bin leider etwas VB geschädigt ^^

nach dem Ändern von "var c" in "Control c" und den anpassen von Control_KeyDown
hat es dann auch funktioniert....


 public Form1()
        {
            InitializeComponent();

            foreach (Control c in this.Controls)
            {
                c.KeyDown += Control_KeyDown;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Control_KeyDown(object sender, KeyEventArgs e)
        {
            MessageBox.Show("Taste gedrückt");
         
        }

Vielen lieben Dank und ich gelobe Besserung in Umgang mit C# ^^

24.08.2020 - 13:21 Uhr

Hallo,
danke für deine Antwort. Jetzt stellt sich folgendes Problem:


  private void Login_Load(object sender, EventArgs e)
        {
            foreach (var c in this.Controls)
            {
                c.KeyDown += Control_KeyDown;
            }
       }

   private void Control_KeyDown()
        {

        }

Das c.keyDown wird nicht erkannt bzw. "object enthält keine Definition für KeyDown"
Gibt es hierfür eine Lösung?
Danke

24.08.2020 - 12:23 Uhr

Hallo,

ich habe immer in VB programmiert und möchte jetzt auch c# lernen.
Ich habe in einem VB Projekt für alle Controls einen Key-Down-Event erstellt
Wie kann ich das in c# machen?

VB:


Dim c As Control

For Each c In me.Controls
    AddHandler c.KeyDown, AddressOf StandartKeyDownEvent
    AddHandler c.TextChanged, AddressOf StandartKeyTextchangedEvent
Next

Vorab schonmal vielen Dank für die Hilfe
LG
Mirco