Laden...

Forenbeiträge von NeueWelt Ingesamt 54 Beiträge

04.10.2013 - 13:33 Uhr

hallo,

hab den Code von dir genau so mal kopiert, aber er bringt mir immer noch den Fehler das er PageBreak nicht kennt.

so scheint es zu funtkionieren:


 myExcelWorkSheet.HPageBreaks.Add(myExcelWorkSheet.Rows[k]);
myExcelWorkSheet.HPageBreaks[1].Location.PageBreak = (int)Excel.XlPageBreak.xlPageBreakManual;

Meine nächste frage wäre jetzt wie ich HPageBreaks wieder leeren kann. Es gibt keine Clear Methode dafür.

myExcelWorkSheet.ResetAllPageBreaks();

scheint auch nicht zu funktionieren.

Danke & Gruß

30.09.2013 - 07:55 Uhr

Morgen,

Er zeigt mir folgende Fehlermeldung:

Fehler 1 "object" enthält keine Definition für "PageBreak", und es konnte keine Erweiterungsmethode "PageBreak" gefunden werden, die ein erstes Argument vom Typ "object" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)

muss ich dafür vll noch einen Verweis einbinden?

danke & Gruß

27.09.2013 - 11:42 Uhr

Hallo,
erstmal danke für die Antworten.

habe Excel im Projekt als Verweis eingebunden.

   Excel.Application myExcelApplication;
                Excel.Workbook myExcelWorkbook;
                Excel.Worksheet myExcelWorkSheet;
                myExcelApplication = null;

                try
                {
                    // First Contact: Excel Prozess initialisieren
                    myExcelApplication = new Excel.Application();
                    myExcelApplication.Visible = false;
                    //myExcelApplication.ScreenUpdating = true;


                    // Excel Datei anlegen: Workbook
                    var myCount = myExcelApplication.Workbooks.Count;
                    myExcelWorkbook = (Excel.Workbook)(myExcelApplication.Workbooks.Add(System.Reflection.Missing.Value));
                    myExcelWorkSheet = (Excel.Worksheet)myExcelWorkbook.ActiveSheet;

                    //Datei-Kopf erstellen
                    myExcelWorkSheet.Cells[1, 1] = "Abrechnungszeitraum"; myExcelWorkSheet.Cells[1, 2] = periode;

wenn ich jetzt versuche,
myExcelWorkSheet.Rows[k].PageBreak = (int)Excel.XlPageBreak.xlPageBreakManual;

kennt er kein PageBreak, was genau muss ich tun?

danke & Gruß

26.09.2013 - 15:54 Uhr

Hallo,

ich hab mal eine vermutlich leichte Frage!?

Wie kann ich per C# einen Seitenumbruch in Excel machen?

Also ich fülle die erste Seite halb, und will dann am Anfang der zweiten Seite weiterschreiben.

Schonmal Danke & Gruß

08.07.2013 - 08:37 Uhr

hallo,

ich möchte in meinem Datagridview für eine Spalte ein benutzerdefiniertes Format vorgeben.

insgesamt habe ich 10 Spalten und benutze unter anderem


dgvDaten.Columns[5].DefaultCellStyle.Format = ("n2");

dies erzeugt einen Tausenderpunkt und 2 Nachkommastellen.

Was ich nun suche ist wie ich für eine Spalte, welche immer 8 Zeichen hat ein festes Format vorgeben kann.
z. B.: 123/456/78 (zwei Schrägstriche immer an der gleichen stelle einfügen)

dgvDaten.Columns[1].DefaultCellStyle.Format = "x/xxxxx/xx";

So hab ichs mal probiert, aber da tut sich leider nichts. Hoffe meine Frage ist nicht zu trivial.

danke schonmal

30.11.2012 - 11:41 Uhr

Hallo,

vielleicht helfen dir diese Links, da sind auch Beispiele dabei:

Update-Methode: http://msdn.microsoft.com/de-de/library/z1z2bkx2.aspx

Binden von Daten: http://msdn.microsoft.com/de-de/library/fbk67b6z.aspx

Gruß,

28.11.2012 - 16:26 Uhr

weil ichs kann^^

if (x3 != 5)
                {
                    while (z3 == Convert.ToInt32(bahn3[merk].Substring(0, 1)))
                    {
                        //wenn keine 0er da sind muss man schaun ob die bahn/breite vorhanden ist, dann auslassen
                        //sonst verschiebt sich einiges, eventl auch kennzahl 999999999
                        //das mit den 0ern eventl einfügen und dann wenn gewsumlist3 && die anderen == 0 regieren, geht vll auch wenn alle 999999999
                        oExcelApplication.Cells[üh, 1] = Math.Round((((gewsumList3[laufvar] / tage3) * 5) / 1000), 1); //wochenverbrauch im monat in tonnen
                        oExcelApplication.Cells[üh, 2] = Math.Round((((gewsumList2[laufvar] / tage2) * 5) / 1000), 1);
                        oExcelApplication.Cells[üh, 3] = Math.Round((((gewsumList1[laufvar] / tage1) * 5) / 1000), 1);
                        oExcelApplication.Cells[üh, 4] = Math.Round((((gewsumList[laufvar] / (tage0 - 1)) * 5) / 1000), 1);
                        oExcelApplication.Cells[üh, 7] = bahn3[merk].Substring(1);
                        oExcelApplication.Cells[üh, 8] = Math.Round(rolgewsum[laufvar] / 1000, 1);
                        merk++; üh++; laufvar++; //bahn3[merk].Remove(0, 1);
                        if (merk == (bahn3.Count - 1))
                        {
                            break;
                        }
                    }
                }
else irgendwas

hab ich selber vor einem Jahr geschrieben und heute wieder angeguckt xD

22.11.2012 - 16:16 Uhr

Mittlerweile hab ichs dann doch irgendwie hinbekommen,

und zwar:

  • Genau auf die Pfade achten wo der Setup die Dateien installiert und wie das in der Registry angelegt ist(das sollte übereinstimmen)

  • Wichtig ist das alle Vorraussetzungen also z.b. office PIA oder Visual studio office Tools auf den PCs installiert sind

  • Wenn man glaubt es passt alles aber es geht trotzdem nicht, auf dem PC mal die .VSTO Datei ausführen

Es funktioniert bei mir jetzt unter 2007 und 2010.

Danke an Sebastian

20.11.2012 - 13:12 Uhr

Dankeschön,

ich hätte dann noch eine Sache, ein Ereigns abfangen sozusagen.

Das printbefore:

Das was ich dann mit deiner Hilfe schon hätte:


oWordApplication.DocumentBeforePrint += new Word.ApplicationEvents4_DocumentBeforePrintEventHandler(Application_DocumentBeforePrint);

und:


 void Application_DocumentBeforePrint(Word.Document Doc, ref bool Cancel)
        {}

momentang implementiere ich das obere in der OnStartupComplete(), aber wenn der user das Dokument druckt wird das nicht abgefangen.
Weiß jemand wie ich das implementieren muss, oder ob ich da noch etwas zusätzliches implementieren muss?

20.11.2012 - 12:03 Uhr

Hallo,

ich weiß ich frage gerade vll ein bisschen oft aber das Thema AddIns find ich ziemlich schwer.

Und zwar wird ein GemeinsamesAddIn erstellt das nur für Word und Excel gebraucht wird.

Meine Frage:
Wie kann ich auf das aktuell geöffnete Dokument von Word zugreifen?

also z.b.: application.Activedocument

20.11.2012 - 11:34 Uhr

So,

habe mit folgender Anleitung mein Setup Projekt erstellt:
http://msdn.microsoft.com/en-us/library/ff937654.aspx (nur word anstatt excel)

Das AddIn erschein jetzt auch bei den anderen PCs unter COM-AddIns und in der Registry.

Aber es kann nicht geladen werden.
Es kommt pc mit word 2010:
"Während des Ladens des COMAddIns ist ein Fehler aufgetreten"

oder bei einem pc mit word 2007:
Das Ladeprogramm für verwaltete AddIns konnte nicht initialisiert werden"

Debuggen nützt wohl nichts weil nicht mal zur ersten MessageBox am einstiegspunkt kommt.

irgendwelche ideen?

danke,

19.11.2012 - 07:46 Uhr

Also,

Microsoft Visual Studio 2010 Professional
Version 10.0.40219.1 SP1Rel

Erstellen tu ichs folgendermaßen:

  • Visual C#
  • Office
  • 2010
  • Word 2010 AddIn
16.11.2012 - 12:53 Uhr

Ok,

mit dem gemeinsamen AddIn funtktioniert alles so wie geplant, Der Setup wird erstellt und bei installation des setups auf einem anderen pc wird das AddIn geladen und hinzugefügt.

liegt wohl an der Extensibility-schnittstelle die im Word-AddIn nicht vorhanden ist.

Jetzt muss ich mal schaun ob ich diese Schnittstelle irgendwie in mein Word-AddIn implementieren kann, oder ob ich den Code aus dem word-addin in mein gemeinsames AddIn implementiere.

Enfach kopieren geht nicht, da ich das activeDocument in Application verwende und kann bei gemeinsamen AddIn nicht drauf zugreifen.

Kann man bei dem AddIn einstellen, das es nur bei öffnen eines bestimmten Dokumentes geladen wird?

15.11.2012 - 16:26 Uhr

ahhh, mir geht ein Lich auf xD

du meinst Gemeinsames AddIn, ich rede von Office 2010 AddIn

bei dem gemeinsamen wird tatsächlich ein Setup gleich generiert, beim Office 2010 nicht.

das sieht dann schon wieder viel komplizierter aus...

15.11.2012 - 14:40 Uhr

Ich weiß doch das die .dll das AddIn ist^^ auch wenns vll nicht so rüber kam

es geht darum das ich die dll nicht unter office als AddIn einbinden kann.

da kommt dann .dll ist kein gültiges AddIn.

Deswegen braucht man dann den Setup, oder bin ich da jetzt total falsch?

So, und diesen Setup klick ich dann auf dem anderen PC an, und dadurch wird das AddIn Installiert.

So weit wär ich ja jetzt, beim Installieren erhalte ich auf dem anderen PC die .dll.

Aber die kann ich nich bei den AddIns hinzufügen, also was muss ich da noch machen?

15.11.2012 - 11:54 Uhr

Danke,

ok also Setup Projekt,

wo wird das erstellt?
und wie kann ich das selbst erstellen?

Edit: Ok, ich kann zum AddIn Projekt ein Setup-Projekt hinzufügen,
aber wenn ich das dann die dll, die von dem AddIn erzeugt wird zuordne und den Setup starte kommt wieder eine dll raus und kein AddIn.

15.11.2012 - 11:22 Uhr

Hallo,

Ich habe über Visual Studio 2010 ein Word 2010 AddIn erstellt.

Dieses wird auf meinem PC automatisch bei Word zu den COM-AddIns hinzugefügt.

Aber wie kann ich das ich jetzt auf einem anderen PC hinzufügen, z.b. auf dem von meinem Bruder?

Wenn ich COM-AddIns bei mir schaue hab ich den pfad der in die "...bin/Debug/Programm.vsto|vstolocal".

Gut dacht ich, nehm ich die Datei stell sie aufs Netzlaufwerk und mein Bruder kann die dann als Office-AddIn einfügen.
Aber die Datei gibt es gar nicht in dem Verzeichnis, es gibt nur Programm.dll und die ist kein gültiges AddIn.

Wie kann ich also das AddIn auch bei ihm nutzen?

danke,

12.11.2012 - 16:38 Uhr

Nach Intensiven suchen doch gefunden:

Application.DocumentBeforePrint += new Word.ApplicationEvents4_DocumentBeforePrintEventHandler(Application_DocumentBeforePrint); //in Startup

  void Application_DocumentBeforePrint(Word.Document Doc, ref bool Cancel)
        {
            if (MessageBox.Show("Do you want to print?", "DocumentBeforPrint", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                Cancel = true;
            }
        }


12.11.2012 - 15:56 Uhr

Danke Sebastian,

In dem Fall ist der Thread glaube ich nötig, oder man nimmt nen Timer.
Hab aber grade gelesen dass diese Methode mit den commandbars nur bis Office 2003 funktioniert(angeblich).

Du vermutest richtig mit startFromScratch, eben RibbonXML.

kannst du mir vll bei dem BeforePrint ereignis unter die Arme greifen, das Beispiel ist für Excel und ich schaffe es nicht auf Word umzuschreiben.

private void WorkbookBeforePrint()
        {
            this.BeforePrint += Word.ApplicationEvents_BeforePrint (ThisApplication_BeforePrint); //Hier was falsch
            
        }

       
        void ThisApplication_BeforePrint(bool Cancel)
        {
            if (DialogResult.No == MessageBox.Show("Are you sure " +
                "you want to print the workbook?",
                "Example", MessageBoxButtons.YesNo))
            {
                Cancel = true;
                MessageBox.Show("Print is canceled.");
            }
        }

bei dem += in der Zeile, fehlt ein Assemblyverweis sagt die Fehlerliste, was müsste da hin?

mir fehlt das deklarieren des Events aber wohin?
public event ApplicationEvents_BeforePrint BeforePrint;

12.11.2012 - 14:49 Uhr

Hallo,

Ich versuche hauptsächlich die Druckfunktion eines Worddokumentes zu verbieten, zusätzlich will ich das Menü/Ribbons alle bis auf eins ausblenden.

über die Forumssuche habe ich dieses Thema gefunden:
Menüs in bzw. von Word ausblenden

Ich habe mir für die Foreach schleife einen speraten Thread gebaut aber der Fehler besteht weiterhin:


//Es ist ein Word 2010 Document über Visualstudio
//die ersten zwei Zeilen befinden sich in ThisDocument_Startup
  Thread t = new Thread(Write);      
          t.start();

 public void Write()
        {
            Thread.Sleep(10000);
            foreach (Office.CommandBar cbar in Application.ActiveWindow.Application.CommandBars)
            {
                    cbar.Visible = false; //Hier tritt Fehler auf
                    cbar.Enabled = false;
            }
            MessageBox.Show("Fertig");                  
        }

Fehler: Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben

Hat jemand noch eine Idee, funktioniert das überhaupt?

Dann zum zweiten Punkt mit den Ribbons, hab mich bisschen umgesehen und gefunden wie man alle Ausblenden und eins behalten kann. Jedoch ist das Ribbon "Datei" davon nicht betroffen. Wie kann ich "Datei" ausblenden?

Oder weiß jemand vll eine ganz andere Lösung um das Drucken zu verbieten und/oder das Menü einzuschränken?

danke schonmal,
NeueWelt

23.07.2012 - 11:26 Uhr

Stimmt, hattest recht.

Habe jetzt auch die Version mit den xml Dateien genommen.

funktioniert einwandfrei.

Super Ding!

Danke

20.07.2012 - 11:41 Uhr

Hallo,

habe den Kalender mal ausprobiert, ohne die XML Feitertagsmatrix und bei mir kommt da etwas komisches raus.

KalenderRechner meinKalender = new KalenderRechner(KalenderRechner.BundesLänder.Bayern);

 tage = Convert.ToInt32(meinKalender.GetArbeitstage("01.08.2012 00:00:00", "01.08.2012 23:59:59");

tage hat den Wert 0.

tage = Convert.ToInt32(meinKalender.GetArbeitstage("01.08.2012 00:00:00", "02.08.2012 23:59:59");

tage hat den Wert 1.

tage = Convert.ToInt32(meinKalender.GetArbeitstage("01.08.2012 00:00:00", "03.08.2012 23:59:59");

tage hat den Wert 3.

Das erscheint mir etwas seltsam da bei der letzte Abfrage denke ich dann tage=2 kommen sollte oder bei den beiden am Anfang tage=1 und tage=2.

19.07.2012 - 11:46 Uhr

Hallo,

Vielen Dank an Rainbird und Sebastian, habt mir sehr geholfen.

gruß

19.07.2012 - 11:44 Uhr

Vielen Dank Sebastian,

habs hinbekommen in eine geöffnete Datei mit mehreren Arbeitsblättern zu schreiben.

auf die art rufe ich das auf:

table = RunningObjectTable.GetApplicationInstancesFromROT("QListe.xls", "Workbook");
                    Excel.Workbook wb2 = table[0] as Excel.Workbook;

und so nutze ich die einezlenen Blätter:

Excel.Worksheet worksheet = (Excel.Worksheet)wb2.Worksheets[1];

weiß jetzt nicht sicher ob der Code so schön ist oder richtig gut, aber immerhin funktionierts bei mir so.

danke nochmal

18.07.2012 - 15:16 Uhr

Hallo,

Die Rückgabewerte aus dem link sind eine Liste aus strings und eine object Variable.

In der Liste stehen die Pfade der geöffneten dateien.

comobjekt = RunningObjectTable.GetRunningCOMObjectByName(Pfad);

der methode übergebe ich den Pfad und erhalte dann:

System._ComObject

in dem snippet von oben verlangt er bei GetActiveObject einen string.

Wenn hier den Pfad aus der liste einfüge kommt der fehler:
Ausnahme von HRESULT: 0x800401F3 (CO_E_CLASSSTRING)

Sebastian könntest du mir bitte zeigen wie man das umwandelt das es funktioniert?

und wegen den worksheets das müsste dann ungefähr so gehn schätze ich:
Excel.Worksheet sh = (Excel.Worksheet)app.Worksheets[X];
oder so ähnlich...

danke

16.07.2012 - 10:25 Uhr

Das ist schon einmal ein Anfang, danke.

aber mir geht es so wie tecla, wie kann ich das zurückgelieferte object, dann schließen(also als Excel Application)

und es ist mir auch nicht klar wie man auf diese Weise erkennt in welches Tabellenblatt man schreibt.

13.07.2012 - 07:30 Uhr

Hallo,

ich möchte mit C# Daten in eine bereits geöffnete Datei schreiben(Excel2010).

Es geht dabei um eine Datei die immer wieder aktualisiert werden soll, bisher mache ich es so, dass ich Excel schließen lasse und dann die betreffende Datei mit den aktualisierten Daten neu öffne. Das Funktioniert soweit.

Jetzt möchte es ohne das Schließen schaffen.

Gefunden habe ich dieses Code-Snippet:

Excel.Application app = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
                Excel.Worksheet sh = (Excel.Worksheet)app.ActiveSheet;

damit kann ich eine schon geöffnete Excel-Datei nutzen, funktioniert aber leider nur wenn nur eine Datei geöffnet ist, die nur ein Tabellenblatt enthält.

bei mir kann es jedoch der Fall sein das mehere Excel-Dateien geöffnet sind, und die zu aktualisierende Datei hat auch mehrere Tabellenblätter.

weiß jemand Rat?

danke schonmal für die Mühen

10.07.2012 - 15:58 Uhr

Hallo,

hier ein zitat von einer webseite das vll hilft:

In der Registry können Sie unter HKEY_CLASSES_ROOT\CLSID beliebige neue Class-ID anlegen. Wichtig ist dabei, dass diese ID noch nicht vorhanden ist. Eine Class-ID besteht immer aus 8-4-4-4-12 Hex-Ziffern. Damit Sie nicht zufällig eine ID anlegen, die bereits verwendet wird, sollten Sie von hinten hochzählen, eine mögliche ID wäre also {00000000-0000-0000-0000-000000000001}.
Quelle:
>

ich schätze mal die ID wäre die nummer von oben in der Fehlermeldung.
ist die ID in der registry vorhanden oder nicht?
wenn ja dann liegt das an was anderem denke ich.

die msdn sagt: CLSID Key

und hier noch ein anderes Forum: Wie nutzt mal "CLSID" in der Registry?

aber: NICHT ZU VIEL RUMSPIELEN AN DER REGISTRY SONST GEHT VIELLEICHT WAS KAPUTT

gruß

09.07.2012 - 16:18 Uhr

Hallo,

ich bin mir jetzt nicht 100 pro sicher aber du solltest den Eintrag in der registry finden, und wenn nicht muss er glaube ich hinzugefügt werden.

ich beziehe mich auf den link hier: How to repair COMException error 80040154?

vielleicht könnten dir auch die beiden links helfen:
Error 80040154 (Class not registered exception) when initializing VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll)

COM Error 80040154

gruß

25.01.2012 - 16:02 Uhr

stimmt habs gefunden
Printdialog braucht mehr als 20sec zum erscheinen
und wie kann ich die Papierdicke übergeben?
aber warum hat dann das mit der foreach-Schleife nicht funktioniert?

mfg

25.01.2012 - 11:11 Uhr

So ich hab das jetzt mal mit einem Druck-Dialog versucht aber es funtktioniert nicht,

der dialog wird zwar angezeigt aber die Einstellungen werden nicht übernommen.
Also wenn ich im Dialog z.B. ein anderes Fach einstelle oder eine andere Dicke wird das einfach ignoriert.


            DialogResult result = printdialog1.ShowDialog();         
            if (result == DialogResult.OK)
            {
                    printDocument1.Print();
            }

dann hab ichs noch mit einer foreach-schleife probiert:


string schacht = "Manuell";
foreach (PaperSource src in printDocument1.PrinterSettings.PaperSources)
                    if (src.SourceName == schacht) { printDocument1.DefaultPageSettings.PaperSource = src; }

nichts davon funktioniert, es wird trotzdem immer aus Kassette1 gedruckt,
habt ihr eine Idee die mir helfen kann?

24.01.2012 - 11:24 Uhr

Hallo,

ich drucke von meinem C# Programm aus. funktioniert

allerdings kommt es machmal zu Papierstau weil ich auf Etikettenpapier drucke das ist ein bischen dicker als normales Papier.
kann man vom programm aus die dicke umstellen(im dialog geht es)??

habe PaperSize und Kind versucht konnte aber nur größe und format(A4,A3) ändern.

könnt ihr bitte helfen?

mfg

10.01.2012 - 15:24 Uhr

Hallo,

Ich habe eine normale Windows form die man über das Kreuz rechts oben schließen kann, das soll auch so bleiben.

jedoch soll die Form nicht jeder schließen können, sie soll sich nach passwort abfrage schließen.

Abfangen kann ich es durch das closing event, aber ich weiß nicht genau wie ich die Passwort abfrage dort einbauen soll.

Durch eine neue Form?
oder durch Textboxen?

könnt ihr mir helfen?
Danke schonmal.

10.01.2012 - 15:07 Uhr

Hallo
Ich weiß nicht obs hilft,

aber ich hatte das Problem mit dem Drucken auch, habe dann die Schriftart Free 3 of 9 benutzt.

Anmerkung:
Ich hatte das auf einer Windows Form generiert, in einer unsichtbaren Textbox.
Habe die Zahlen in dem Code in Variable geschrieben und diese der Textbox zugewiesen, der Textbox die Schriftart Free 3 of 9 zugewiesen und ausgedruckt, kann man wunderbar lesen.

mfg

20.10.2011 - 14:03 Uhr

danke für die Antworten

habe Anchor ausprobiert da bleiben die randabstände gleich und das Control vergrößert sich, das ist richtig, aber wenn ich z.b. einen Button habe unten rechts dann wird der wenn ich form vergrößer auch riesen groß.

Also werd ich das dann wohl einzeln vergrößern.

mfg

18.10.2011 - 16:12 Uhr

Man kann es unter Systemsteuerung einstellen für den Drucker dann wird es im Programm einfach übernommen.

18.10.2011 - 16:11 Uhr

@ujr

du hast vollkommen recht es lag nicht daran

es lag an den Einstellungen des Druckers selbst und hatte reingarnichts mit meinem Programm zu tun

trotzdem danke euch allen

17.10.2011 - 11:58 Uhr

danke, gut zu wissen

17.10.2011 - 11:57 Uhr

dankeschön, scheint zu funktionieren

13.10.2011 - 13:00 Uhr

mein fehler

Die Fehlermeldung kam da.Fill das beim ausführen war mist

13.10.2011 - 12:42 Uhr
printDocument1.DefaultPageSettings.HardMarginX = 5;

so sagt er HardMarginX ist schreibgeschützt, es kann darauf nicht zugriffen werden, ich weiß das jeder Drucker seinen rand hat weil er nicht bis auf den letzten punkt drucken kann, aber ich habe alle Margins auf 0:


            printDocument1.DefaultPageSettings.Margins.Top = 0;
            printDocument1.DefaultPageSettings.Margins.Right = 0;
            printDocument1.DefaultPageSettings.Margins.Left = 0;
            printDocument1.DefaultPageSettings.Margins.Bottom = 0;

und dennoch schneidet er im hochformat rechts einfach ab. z.B.
Eishockeyma
Bergleitperso

und wenn ich querformat mache dann lässt er oben leerzeilen und fängt in der mitte an zu drucken.

13.10.2011 - 10:39 Uhr

Hallo,

Ich möchte ein Etikett ausdrucken, soweit so gut, allerdings lässt der drucker an der rechten seite 2,3 cm rand einfach frei.

habe Margin bereits auf 0 gesetzt funktioniert nicht, allerdings steht HardMargin auf dem wert 23;
Wenn ich das ändern will heißt es schreibgeschützt.

Kann man das überhaubt ändern und wenn ja wie?
vll PageSettings objekt, aber ich weiß nicht wie

13.10.2011 - 09:39 Uhr

Hallo,

Ich habe eine windows form anwendung mit mehreren Forms und vielen Steuerelementen(buttons,labels usw.).
Auf Bildschirm größe von 17 zoll.

jetzt sollen die forms größer werden, gibt es eine möglichkeit mit der sich die Steuerelement dann automatisch anpassen, oder muss ich jedes einzelne element manuell vergrößern?

12.10.2011 - 17:55 Uhr

verwendetes Datenbanksystem: MySQL

Hallo,
irgendwie steh ich auf der leitung oder so aber ich finde einfach den Fehler nicht, beim ausführen meines Codes kommt "Fatal error encounted during command exception".
Hier mal Code:


Nummer = 1000025;
            string mysql = "SELECT * FROM Archiv WHERE LfdNr = ?LfdNr";  //liefert den Datensatz zu der LfdNr
            MySqlConnection DbConnection = new MySqlConnection(con);
            try
            {
                DbConnection.Open();

                MySqlCommand DbCommand = new MySqlCommand(); // objekt der Commandkl. erstellen
                
                DbCommand.Connection = DbConnection; //dem Command die entsprechende Verbindung zuweisen
DbCommand.Parameters.Add("@LfdNr", MySqlDbType.Int32).Value = Nummer;
                DbCommand.CommandText = mysql;
  MySqlDataAdapter da = new MySqlDataAdapter(mysql, DbConnection); //Objekt des DataAdapters erstellt

                DataSet ds = new DataSet();
                DataTable tbl = ds.Tables["kunden"];          //Dataset und Datentable für lokale speicherung

                da.Fill(ds, "kunden");    ///Hier fehler

                dataGridView1.DataSource = ds.Tables["kunden"];
                Datum = dataGridView1.Rows[6].Cells[0].Value.ToString();
                System.DateTime.Parse(Datum);
                //DateTime.ParseExact(Datum,"ddMMYYYY", Provider);
                //if (Datum > dt)
                //{ }
                //else
                //{ }
            }

            catch (Exception f)
            {
                MessageBox.Show(f.Message);
            }

            finally
            {
                DbConnection.Dispose();
                MessageBox.Show("Vielen Dank, Der Barcode wurde erfolgreich gescannt.");
                sp.Close();
                
            }
         
        }

ich verstehs nicht ganz ist doch einfach nur ein select befehl
könnt ihr mir bitte helfen?

12.10.2011 - 13:31 Uhr

Danke erstmal, also das mit der neuen seite anfangen funktioniert
aber das querformat noch nicht, an welcher stelle muss man das einbauen in der zeile vor
printDocument1.Print();
funktioniert es nicht und auch nicht in der Zeile wo vorher das falsch war, aber wo soll es sonst hin?

12.10.2011 - 12:42 Uhr

Hallo,
Ich drucke den inhalt von Textboxen, dies würde ich gerne im Querformat machen da gibt es ja den Befehl Landscape aber ich weiß nicht wie ich den richtig einbauen muss.

Der zweite Punkt ist das vor der Textboxbarcode eine neue Seite angefangen werden soll, d.h. den inhalt der Textboxbarcode auf eine extra Seite.
Also insgesamt 2 Seiten.
Hier mal mein bisheriger code:


private void ButDrucken_Click(object sender, EventArgs e)
        {
            Datenbankschreiben();
            PrintDialog printDialog1 = new PrintDialog();
            printDialog1.Document = printDocument1;
            //printDocument1.PrinterSettings.PrinterName = @"\\br-isd\BR_DRU_TAL";
            DialogResult result = printDialog1.ShowDialog();
            printDialog1.PrinterSettings.LandscapeAngle = 90;  //schreibgeschützt
            if (result == DialogResult.OK)
            {
                printDocument1.Print();
            }            
            
            MessageBox.Show("Ihr Besucherpass wird gedruckt, bitte melden sie sich am Ende ihres Besuches am Empfang ab.", Box1, MessageBoxButtons.OK, MessageBoxIcon.Information);
            for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
            {
                if (Application.OpenForms[i].Name != "Form1")
                {
                    Application.OpenForms[i].Close();
                }
            }
            
        }   
        
        private void printDocument1_PrintPage_1(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            
            e.Graphics.DrawString("BESUCHERPASS", new Font("Arial", 13, FontStyle.Regular), Brushes.Black, 8, 3);
            e.Graphics.DrawString("Name:", new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 8, 33);
            e.Graphics.DrawString(textBoxName.Text, new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 110, 33);
            e.Graphics.DrawString("Firmenname:", new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 8, 60);
            e.Graphics.DrawString(textBoxFirma.Text, new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 110, 60);
            e.Graphics.DrawString("Begleitpers:", new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 8, 85);
            e.Graphics.DrawString(textBoxBesucht.Text, new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 110, 85);
            e.Graphics.DrawString("Beginn:", new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 8, 110);
            e.Graphics.DrawString(textBoxBeginn.Text, new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 80, 110);
            e.Graphics.DrawString("Bez:", new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 190, 110);
            e.Graphics.DrawString(Beruf, new Font("Arial", 11, FontStyle.Bold), Brushes.Black, 245, 110);
            e.Graphics.DrawString("Kennz:", new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 8, 135);
            e.Graphics.DrawString(textBoxKennz.Text, new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 80, 135);
            e.Graphics.DrawString("Datum:", new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 190, 135);
            e.Graphics.DrawString(textBoxDatum.Text, new Font("Arial", 11, FontStyle.Regular), Brushes.Black, 245, 135);
            e.Graphics.DrawString("Bitte geben Sie diesen Ausweis nach Gebrauch am Empfang ab.", new Font("Arial", 8, FontStyle.Regular), Brushes.Black, 8, 160);
            e.HasMorePages = (seriennummer < anzahlseiten);  
            seriennummer++;  //Hier neue seite geht so aber nicht
            e.Graphics.DrawString(textBoxBarcode.Text, new Font("Free 3 of 9", 50 ,FontStyle.Regular),Brushes.Black,8,200) ;
          (this.ButDrucken_Click);
                        
        }

Könnt ihr mir hier helfen?

12.10.2011 - 09:30 Uhr

Ich hab jetzt einfach mal ausprobiert ?Ende den string Indata zuzuweisen und das funktioniert auch, er schreibt den String in die Tabelle.

Jetzt versteh ich noch weniger warum er das mit dem String time nicht macht, der string bekommt den wert von eine Datetimepicker zugewiesen.
Als Fehler kommt weiterhin:
Die Eingabenzeichefolge hat das falsche Format

Aber sollte er einen String in eine spalte nicht einfach reinschreiben?
Habe die Spalte in der Tabelle der Db extra varchar definiert

12.10.2011 - 09:02 Uhr

benutze ich denn so ein wort falsch?

könnt ihr mir vielleicht einfach mal ein Beispiel geben ich komme überhaupt nicht weiter...

11.10.2011 - 15:44 Uhr

ok, danke mal soweit

Jetzt hab ich das auf .Net Connector geändert mit der vermutlich richtigen Syntax
allerdings bringt er mir den Fehler: "Die Eingabezeichenfolge hat das falsche Format"


SerialPort sp = (SerialPort)sender;
            indata = sp.ReadExisting(); ;
            Nummer = Convert.ToInt32(indata);
            string mysql = "UPDATE Besucher set Ende = ?Ende WHERE LfdNr = ?LfdNr";
            string mysql2 = "INSERT INTO Archiv (Name, Firma, Begleitperson, Beginn, Ende, Kennz, Datum, Bez,LfdNr,Belehrung) SELECT Name, Firma, Begleitperson, Beginn, Ende, Kennz, Datum, Bez,LfdNr,Belehrung FROM Besucher where Ende > 0";
            string mysql3 = "DELETE FROM Besucher where LfdNr= ?LfdNr AND Ende > 0";
            MySqlCommand DbCommand = new MySqlCommand();
            MySqlConnection DbConnection = new MySqlConnection(con);
            try
            {
                DbConnection.Open();
                DbCommand.Parameters.AddWithValue("?Ende", MySqlDbType.Time).Value = time;
                DbCommand.Parameters.AddWithValue("?LfdNr", MySqlDbType.VarChar).Value = Nummer;
                //DbCommand.Parameters.AddWithValue("?LfdNr", MySqlDbType.Int32).Value = indata;
                DbCommand.Connection = DbConnection;
                DbCommand.CommandText = mysql;      //Ende einfügen
                DbCommand.ExecuteNonQuery();                    //Die Eingabezeichenfolge hat das falsche format
                DbCommand.CommandText = mysql2;     // in Archiv schreiben
                DbCommand.ExecuteNonQuery();
                DbCommand.CommandText = mysql3;     // Aus aktueller Tabelle löschen
                DbCommand.ExecuteNonQuery();

der Fehler muss beim Ende liegen(?Ende) denn wenn ich für ?Ende einfach "8:10" nehme funktioniert es, auch wenn ich den Typ auf Time umwandle nützt das nichts.