ohhhhhh man .... Danke
Wer lesen kann ich klar im Vorteil ^^
Super, Funkt jetzt
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?
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
Funktioniert ...
super Danke
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
Hallo,
danke für die Antwort.
An die DLLs im Programm habe ich garnicht gedacht, das werde ich noch versuchen
Nochmals Danke
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
Ahhhh ... danke für den Hinweis!
Jetzt klappt alles
Danke
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...
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 ...
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";
}
}
}
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
Ne... MVVM ist mir nicht bekannte .... werde mich damit mal auseinander setzten
Scheint ja genau das zu machen
Danke
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
Achso ... da war ich wohl falsch informiert
Also kann auch weiterhin beruhigt mit WinForms arbeiten
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
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
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# ^^
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
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