Laden...

Forenbeiträge von cpetit Ingesamt 54 Beiträge

24.06.2022 - 11:05 Uhr

Hallo, ich komme leidernicht weiter und benötige mal Hilfe von euch.

Ich möchte gerne aus einer Consolen-Anwendung in einer Access-Datenbank eine Verknüpfung zur einer Textdatei erstellen. Ich beomme die Datenbank und die Verknüpfung zur Textdatei erstellt aber leider ist die Verknüpfung mist.

Vermutlich liegt es dran das der Provider String nicht richtig ist, in Moment übergebe ich als Wert = "Text". Ich muss doch vermutlich mitgeben das die erste Zeile Header ist und als Trennungszeichen ";" benötigt wird.

Verwendetes Datenbanksystem: Access 2016


//DB anlegen
                ADOX.Catalog ct = new Catalog();
                ct.Create(ConnectionString);
    
                //Tabelle anlegen
                ADOX.Table tbl = new ADOX.Table();
                tbl.Name = "Q20104";
                tbl.ParentCatalog = ct;                             

                tbl.Properties["Jet OLEDB:Link Provider String"].Value = "Text";
                tbl.Properties["Jet OLEDB:Link Datasource"].Value = "H:\\TEMP";
                tbl.Properties["Jet OLEDB:Remote Table Name"].Value = "Q20104";
                tbl.Properties["Jet OLEDB:Create Link"].Value = true;
                ct.Tables.Append(tbl);
                ct.Tables.Refresh();

24.03.2011 - 08:14 Uhr

Nein. daran hängt es nicht.

Die anderen Rows sind für die anderen Controls gedacht die ich hier aus dem Code raus genommen habe.

Hat vielleicht noch jemand einen Tipp?

22.03.2011 - 10:36 Uhr

Versuche gerade mein Stackpanel von Vertikal in Horizontal umzustellen aber leider ohne Erfolg. Die Einträge werden trotzdem Vertikal angezeigt obwohl ich Orientation = "Horizontal" zugewiesen habe. Kann mir vielleicht jemand weiter helfen? Den Code habe ich ich hier "http://www.codeproject.com/KB/WPF/InternationalizedWizard.aspx" gefunden und für meine bedürfnisse angepasst.

Code der nix damit zu tun hat habe ich entfernt wegen der Übersichtlichkeit.


[XML]
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Class="AIS.WizardTeilnahmeModule.WizardTeilnahmeView"
    xmlns:view="clr-namespace:AIS.WizardTeilnahmeModule"
    Height="600" Width="908"
    MinHeight="150" MinWidth="300"
    WindowStartupLocation="CenterScreen"
    Title="Wizard ..." WindowStyle="ToolWindow">
    <Window.Resources>

        <!-- HEADERED CONTENT CONTROL STYLE -->
        <Style TargetType="{x:Type HeaderedContentControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type HeaderedContentControl}">
                        <StackPanel Margin="2,0" Orientation="Horizontal" >
                            <Grid Margin="1,1,1,12" RenderTransformOrigin="0.5,0.5">
                                <Grid.Effect>
                                    <DropShadowEffect Opacity="0.1" />
                                </Grid.Effect>
                                <Grid.RenderTransform>
                                    <RotateTransform Angle="-3" />
                                </Grid.RenderTransform>
                            </Grid>
                            <Grid>
                                <Rectangle Fill="{TemplateBinding Background}" />
                                <ContentPresenter ContentSource="Content" />
                            </Grid>
                        </StackPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <!-- WIZARD STEP TEMPLATE -->
        <DataTemplate x:Key="wizardStepTemplate">
            <Border x:Name="bdOuter" Height="28" BorderBrush="{DynamicResource grau80}" CornerRadius="4" Background="{DynamicResource grau20}" BorderThickness="0.5" Margin="2" Opacity="0.6" 
SnapsToDevicePixels="True" >
                <TextBlock x:Name="txt" Margin="4,0,0,0" Text="{Binding Path=DisplayName}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
            </Border>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=IsCurrentPage}" Value="True">
                    <Setter TargetName="txt" Property="TextBlock.Foreground" Value="{DynamicResource weiss}" />
                    <Setter TargetName="bdOuter" Property="Background" Value="{DynamicResource Orange}" />
                    <Setter TargetName="bdOuter" Property="Opacity" Value="1" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </Window.Resources>
    <Grid>
        <Grid Name="gridWizard">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="50" />
                <RowDefinition Height="100" />
                <RowDefinition Height="380" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            
            <Grid Name="gridStep" Grid.Column="0" Grid.Row="1">
                <!--<Border>-->
                    <!-- WIZARD STEP LISTING -->
                    <HeaderedContentControl Margin="10">
                        <ItemsControl ItemsSource="{Binding Path=Pages}" ItemTemplate="{StaticResource wizardStepTemplate}" Width="300"/>
                    </HeaderedContentControl>
                <!--</Border>-->
            </Grid>     
        </Grid>
    </Grid>
</Window>

[/XML]

07.10.2010 - 09:50 Uhr

Danke, schaue ich mir gleich mal an.

06.10.2010 - 13:41 Uhr

Darum


public A_Sitze SitzeListe
{
            get { return Info as A_Sitze; }
}

habe ich vielleicht vergessen zu erwähnen.

06.10.2010 - 12:29 Uhr

Ist für jeden Eintrag vorhanden.

Hier für A_Auto: hier wird reingesprungen wenn ich den haltepunkt setzte

        
public string Typ
        {
            get
            {
                if (aAuto == null)
                    return string.Empty;
                return aAuto.Typ ;
            }
            set
            {
                if (aAuto.Typ != value)
                {
                    aAuto.Typ = value;
                    OnPropertyChanged("Typ");
                }
            }
        }

Hier für die Liste: dort springt er nicht rein.

public string Bezeichnung
        {
            get { return SitzeListe.Bezeichnung; }
            set
            {
                if (SitzeListe.Bezeichnung!= value)
                {
                    SitzeListe.Bezeichnung= value;
                    OnPropertyChanged("Bezeichnung");
                }
            }
        }

06.10.2010 - 11:09 Uhr

Nein geht auch nicht.

Muss ich noch vielleicht ein Property setzen im meinem ViewModel und wenn ja wie.

06.10.2010 - 10:21 Uhr

Hallo,

bräuchte mal hilfe von euch. Habe fast das ganze Netz abgesucht aber keine Lösung gefunden. Vielleicht fehlt mir auch der passend Suchbegriff.

Nehmen wir mal an ich hätte eine Klasse Auto und eine Klasse Sitze.

Die Klasse Sitze habe ich in der Klasse Auto als List<t>

    public class A_Auto 
    {

        public string Typ { get; set; }


        public string Bezeichnung { get; set; }
 

        public List<A_Sitze> SitzeListe { get; set; }

    }

In meinem PWF-Fenster habe ich die zwei Felder für Typ und Bezeichnung die auch gefüllt werden aus der Klasse A_Auto und eine Listbox die mir die Daten aus der Liste "SitzeListe" anzeigen soll. Bekomme aber keine Daten in der Listbox angezeigt.

ItemsSource="{Binding SitzeListe}" der Listbox
Text="{Binding SitzeListe.Bezeichnung}" des Textfeldes in der Listbox.

Kann mir jemand weiter helfen?

10.03.2010 - 14:36 Uhr

Hallo,

versuche gerade eine XML mit Linq zu erstellen. Scheitere aber kläglich wenn die XML mehr als eine Tabelle beinhaltet.

Gibt es ein Beipsiel bei dem eine XML aus mehreren Tabellen mit Linq erstellt wird oder hat jemand einen Tipp?

Bekome einfach nicht die Daten aus der 2 Tabelle an den passenden XElement angeängt. Wie geht man denn vor bei sowas.

Die ganze Beispiele die man im Netz findet beinhalten immer nur eine Tabelle.

03.12.2009 - 10:04 Uhr

Danke, dann mache ich es ja doch richtig.

03.12.2009 - 09:28 Uhr

Habe ein Problem mit Anführungszeichen in einem String.


string x = "[@" + ((XmlAttribute)att).Name.ToString() + "=\"" + ((XmlAttribute)att).Value + "\"]";

Im string steht das:
[@V=&quot;730110000&quot;]

.


Console.WriteLine("[@" + ((XmlAttribute)att).Name.ToString() + "=\"" + ((XmlAttribute)att).Value + "\"]");

Die Konsole gibt mir den String richtig aus:
[@V="730110000"]

.


MessageBox.Show("[@" + ((XmlAttribute)att).Name.ToString() + "=\"" + ((XmlAttribute)att).Value + "\"]");

Die MessageBox gibt mir den String richtig aus:
[@V="730110000"]

.
Ich brauche aber im String das selbe Ergebnis wie in der MessageBox und wie Console:Writeline.

Verstehe das nicht.

02.12.2009 - 09:37 Uhr

So, habe das Problem zuerst mal so gelöst:

string sPath = "/body/hnr_liste/hnr/bsnr";
IEnumerable<XElement> xOldDoc= xmlOldDoc.XPathSelectElements(sPath);

geht auch alles soweit.

Wie kann ich jetzt aber auf das Attribute "V" des Elements "hnr" die Where-Klausel setzten?


var oldHnrs = from oldHnr in xOldDoc
              where oldHnr.Element("hnr").Attribute("V").Value == "7301100000"
              select oldHnr;

Bekomme hier immer die Fehlermeldung:
"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Würde heisen das er das Element("hnr") in der Where-Klausel nicht findet.

Hat jemand einen Tipp?

01.12.2009 - 16:22 Uhr

So das mit dem vergleichen habe ich hinbekommen.

Was ich noch nicht hinbekommen habe ist das durchlaufen aller Elemente eines XElements.

Hat da jemand für mich einen Tipp wie ich das XElement rekursiv durchlaufen kann?

01.12.2009 - 11:22 Uhr

Ich meinte damit die einzelne Elements wie im Beispiel die XName("body,"hnr_liste","hnr"......) in einem Array stehen würde.

Im Beispiel ist das teil ja auf 3 Elements beschränkt wenn ich jetzt aber mehr Elements bräuchte was mach ich dann?

01.12.2009 - 07:42 Uhr

Hallo, habe schon Google durchsucht aber keine Antowrt auf meine Frage bekommen.

Beispiel:

var oldHnrs = from oldHnr in xOldDoc.Elements("body").Elements("hnr_liste").Elements("hnr")
                              select oldHnr;

Meine Frage ist, ob ich die einzelne Elements() in meinem Beispiel auch zur Laufzeit erzeugen kann, damit ich den Code auch für andere XML benutzen kann oder muss ich diese immer fest in den Quellcode schreiben oder soll ich dafür auf XPath ausweichen?

Vielleicht kann mir ja jemand von euch weiter helfen.

27.11.2009 - 09:33 Uhr

Habe noch ein paar Probleme.

Ich habe zwei xml-Dateien die ich gerne vergleichen will.

Habe bis jetzt folgendes gemacht.

Durchlaufe XML-1 und merke mir bei jedem durchlauf einen Wert den es in der XML auch nur einmal gibt. Dann filter ich mit der Where-Klausel beide XML und schreibe das Ergebnis jeweils in ein neues XElement.

Jetzt wollte ich beide XElement miteinander vergleichen mit "XNodeDocumentOrderComparer" der sagt mir aber das er nur XElemente aus der gleichen XML vergleichen kann. Sofern ich die Fehlermeldung richtig deuten kann.

System.InvalidOperationException {"Ein gemeinsames Vorgängerelement ist nicht vorhanden."}

Gibt es was anderes für die XElemente zu vergleichen?

25.11.2009 - 11:53 Uhr

Zuerst mal danke für die Links.

Komme aber trotzdem nicht weiter. Ich möchte jetzt gerne die Where-Klausel gerne auf das Attribute("V") des Elements("hnr") anwenden.

Habe es so probiert das brachte aber einen Fehler :
where hnr.Element("hnr").Attribute("V").Value == "7310950000"

Einen Tipp für mich?


           try
            {
                var hnrs = from hnr in xml_Doc.Elements("body").Elements("hnr_liste").Elements("hnr").Elements("bsnr")
                           where hnr.Attribute("V").Value == "731095000"
                           select new
                           {
                               vBsnr = hnr.Attribute("V").Value,
                               vtBsnr = hnr.Attribute("VT").Value
                           };

                foreach (var hnr in hnrs)
                {
                    Console.WriteLine(" BSNR V: " + hnr.vBsnr + "  BSNR VT: " + hnr.vtBsnr);
                }
            }
            catch (NullReferenceException ex)
            {
                MessageBox.Show(ex.Message);
            }
25.11.2009 - 09:01 Uhr

Hallo,
bräuchte mal Hilfe von euch.

Ich möchte gerne eine XML mit Linq rekursiv durchlaufen und stehe total auf dem Schlauch wie ich vorgehen soll.

Fange gerade an mich in Linq einzulesen und deshalb suche ich Hilfe.

19.06.2009 - 12:49 Uhr

Danke für die Infos.

19.06.2009 - 12:34 Uhr

Hallo,

benutze noch das Visual Studio 2002 und Framework 1.1.

Kann ich mit VS 2002 auch das Framework 2.0 benutzen?

Ist vielleicht eine Dumme Frage, finde aber keine Antwort bei Google.

Danke

20.03.2009 - 09:50 Uhr

Habe mir den Code nochmals angeschaut und durch den Kopf gehen lassen.

Ist natürlich alles mist was ich in meinem Beitrag geschrieben habe.

Eine frage habe trotzdem.

// INSERT SQL-Anweisung für Excel erzeugen
StringBuilder builder = new StringBuilder("INSERT INTO [");
builder.Append(table.TableName);

wohin schreibt er den Insert?

Das DataTable habe ich mit einem SQL-String gefüllt welches mehrere Tabellen beinhaltet.

20.03.2009 - 09:06 Uhr

Hallo,

habe gerade versucht deine Klasse bei mir einzubauen.

Bekomme in Methode "FillExcelSheet" immer einen Fehler und zwar wenn er die Excel-Tabelle füllen will.


				// durchlaufen
				foreach (DataRow row in table.Rows)
				{
					// Neuen OLEDB-Befehl erzeugen
					OleDbCommand command = new OleDbCommand(insertStatement, connection);

					// Alle Spalten durchlaufen
					foreach(DataColumn column in table.Columns)
					{
						// Parameter übergeben                    
						command.Parameters.Add(new OleDbParameter(column.ColumnName,row[column]));
					}
					// Befehl ausführen
					command.ExecuteNonQuery();
				}

Er läuft hier nur einmal durch die obere Schleife und dann bricht er ab.
Die Spaltennamen werden im ersten Schleifendurchlauf in Excel gesetzt und dann kommt der Abbruch mit "Ungültiger Tabellennamen".

Das DataTable habe ich mit einem SQL-String gefüllt.

Benutze VS 2003.

13.03.2009 - 17:43 Uhr

Hallo,

habe ein Problem komme nicht weiter und hoffe das mir hier einer helfen kann mit Tipps oder einer Lösung.

Öffne aus meiner Anwendung eine Word-Datei füllen die Textmarken drucke die Word-Datei mit dem Distiller der eine Ps-Datei erzeugt die ich dann Convertiere in einc PDF. Funktioniert soweit alles Super aus meinem Rechner. Wenn ich die Anwendung aber dann im Haus weitergebe funktioniert diese nicht mehr. Habe jetzt rausgefunden das dies mit den Benutzerrechten zusammen hängt. Vermutlich möchte der Distiller im hintergrund in eine Datei oder in die Registrie was schreiben der Anwender aber keine Benutzerrechte dafür hat.

Wie kann ich das umgehen ode um welche Rechte handelt es sich genau?

Der Anwender kann auch so kein Dokument aus Word mit dem Distiller erzeugen.

Wollte dann den Distiller ersetzen durch den Adobe Writer. Bekomme dann aber immer eine PDF-Datei mit 0 kb die man nicht öffnen kann.

Erzeuge die Datei aus der Anwendung mit PrintOut

16.02.2009 - 14:42 Uhr

habe jetzt eine Lösung gefunden.

				wordapp.Application.PrintOut(ref Background, ref missing, ref Range, ref missing,
					ref missing, ref missing, ref missing, ref Copies,
					ref missing, ref PageType, ref PrintToFile, ref Collate,
					ref missing, ref missing, ref missing,
					ref PrintZoomRow, ref missing, ref missing,ref missing);

so geht es jetzt.

Kann ich jetzt auch direkt ein Pdf erzeugen?

16.02.2009 - 12:17 Uhr

Hallo brauche mal eure hilfe für PrintOut.

Möchte gerne ein Worddokument drucken bekomme aber immer die Error Meldung "Typkonflikt" kann mir jemand mal weiter helfen. Möchte gerne das Document öffnen und Automatisch drucken lassen.

Benutze Framework 1.1

Hier mal mein Code:

			ApplicationClass wordapp = new ApplicationClass();

			object missing = System.Reflection.Missing.Value;
			object dateiname = System.Windows.Forms.Application.StartupPath + "\\Test.doc";
			object neueVorlage = false;
			object dokumentenTyp = 0;
			object sichtbar = true;

			object formFields1 = "wTitel";
			object formFields2 = "wVorname";
			object formFields3 = "wNachname";
			object formFields4 = "wStrasse";
			object formFields5 = "wPlz";
			object formFields6 = "wOrt";

			if (wordapp == null)
			{
				MessageBox.Show("Konnte keine Verbindung zu Word herstellen!");
				return;
			}
			
			// Word anzeigen
			wordapp.Visible = true;
			// Word-Dokument öffnen
			wordapp.Documents.Open(ref dateiname, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
									ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, 
									ref missing, ref missing, ref missing);
			
			// Wert setzen
			wordapp.ActiveDocument.FormFields.get_Item(ref formFields1).Result = "Dr. med";
			wordapp.ActiveDocument.FormFields.get_Item(ref formFields2).Result = "Dietmar";
			wordapp.ActiveDocument.FormFields.get_Item(ref formFields3).Result = "Schmidt";

			wordapp.ActiveDocument.FormFields.get_Item(ref formFields4).Result = "In der Muhl 3";
			wordapp.ActiveDocument.FormFields.get_Item(ref formFields5).Result = "66740";
			wordapp.ActiveDocument.FormFields.get_Item(ref formFields6).Result = "Saarlouis";




			object copies = "1";
			object pages = "";
			object background = true; 
			object append = true; 
			object range = Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument;
			object outpuFileName = System.Windows.Forms.Application.StartupPath + "\\Doc\\Müll.pdf";
			object printToFile = false;
			object collate = true;
			object manualDuplexPrint = false;
			object printZoomColumn = 0;
			object printZoomRow = 0;
			object printZoomPaperWidth = 0;
			object printZoomPaperHeight = 0;
			object oTrue = true;
			object oFalse = false;
			object fileName = System.Windows.Forms.Application.StartupPath + "\\Doc\\Müll.pdf";
			object items = Microsoft.Office.Interop.Word.WdPrintOutItem.wdPrintDocumentContent;
			object pageType = Microsoft.Office.Interop.Word.WdPrintOutPages.wdPrintAllPages;


			
			object activePrinter = "Acrobat PDFWriter";

			try
			{
				wordapp.PrintOut(ref background, ref missing, ref range, ref missing,
								ref missing, ref missing, ref missing, ref copies,
								ref missing, ref pageType, ref printToFile, ref collate,
								ref missing, ref manualDuplexPrint, ref printZoomColumn,
								ref printZoomRow, ref missing, ref missing,ref missing);
			}
			catch(Exception ex)
			{
				MessageBox.Show(ex.Message);

				object savechanges = false;
				 
				wordapp.Documents.Close(ref savechanges, ref missing, ref missing);
				 
				wordapp.Quit(ref savechanges, ref missing, ref missing);

				return;
			}


		}

Bis zum Anzeigen und setzen der Textmarken funzt alles, nur das Drucken geht nicht.

11.12.2008 - 16:40 Uhr

Habe jetzt ein Setup erstellt das nur die Merge Dateien beinhaltet.

Die Setup Datei hat dann eine größe von ca. 69 MB. Das heißt jeder der die Anwendung im Netz startet muss vorher das Setup ausführen für eine Anwendung die gerade mal eine Größe von ca. 324 Kb hat.

Kann das sein?

10.12.2008 - 12:09 Uhr

habe die Runtime installiert. Bringt aber immer noch die gleiche Fehlermeldung.

10.12.2008 - 11:30 Uhr

Ein Setup möchte ich ja nicht erstellen weil die Anwendung ja im Netz liegt.

Werde mal die Runtime von CR installieren.

10.12.2008 - 09:55 Uhr

Brauche mal wieder hilfe von euch.

Habe eine kleine Anwendung mit C# geschrieben mit VS 2003 und einen Report mit CR 11.

Läuft auf meinem Rechner ohne Probleme.

Die Anwendung soll im Netz liegen und jeder Anwender soll aus dem Netz das Programm starten. Jeder kann die Anwendung starten, aber nur bei mir wird auch der Report im Viewer angezeigt. Der Rest bekommt folgende Fehlermeldung:

************** Exception Text **************
System.TypeInitializationException: The type initializer for 'CrystalDecisions.CrystalReports.Engine.ReportDocument' threw an exception. ---> System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {F0A36D7F-4068-44B5-809D-9E91AE74FBDB} failed due to the following error: 80040154.

Habe folgende DLL in das Verzeichnis gelegt wo die Anwendung liegt:
CrystalDecisions.CrystalReports.Engine.dll
CrystalDecisions.ReportAppServer.CommLayer.dll
CrystalDecisions.Shared.dll

Hat jemand einen Tipp?

Die Suchfunktion habe ich schon benutzt aber brachte mich nicht weiter.

31.10.2008 - 10:52 Uhr

Bin mal wieder am verzweifeln.

Habe eine kleine Anwendung mit VS 2003 in C#. Die Anwendung beinhaltet einen Report den ich mit CR erstellt habe. Leider läuft die Anwendung nur auf dem Rechner auf denen auch VS installiert ist.

Jetzt habe ich im Internet gefunden das ich auf die Rechner die kein VS installiert haben das Merge-Modul von CR installieren muss.

Habe auch im Netz gefunden das ich nur die Datei "cr9netredist_de.msi" auf dem Zielrechner installieren muss und den Key von CR den ich unter VS Info finde eingeben muss. Bekomme aber nach der Eingabe des Key folgende Fehlermeldung "Der Schlüsselcode ist ungültig".

Was mach ich nur falsch?

29.09.2008 - 14:06 Uhr

Ich schaffe es einfach nicht.

Durchlaufe ich die ArrayList oder die TableStyles des DataGrid?

Wie spreche ich die dann die Zeile an?

29.09.2008 - 12:19 Uhr

Hallo, brauche nal wieder hilfe von euch.

Habe ein DataGrid welches ich mit einer ArrayListe ihr DataSource fülle.
Jetzt möchte ich gerne die Zeilen im DataGrid einfärben wo das Datum kleiner ist als das aktuelle Datum der System-Zeit.

Wie macht man das?

Muss ich jede Zeile durchlaufen und prüfen und dann die BackColor Eigenschaft ändern
oder geht das auch einfacher?

Hat jemand ein paar Tipps?

Benutze Framework 1.1

20.08.2008 - 10:18 Uhr

Danke.
Habe es jetzt so gemacht.


		private void ToggleControls()
		{
			// Benutzerkontroll zuweisen
			this.frm = new Asd_Stamm_Arzt();

			this.ShowPanel1.Controls.Add(frm);
		}

		private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			switch(tabControl1.SelectedIndex)       
			{
				case 0:
					this.ShowPanel1.Controls.Add(frm);
					break;
				case 1:
					this.ShowPanel2.Controls.Add(frm);
					break;
				case 2:
					this.ShowPanel3.Controls.Add(frm);
					break;
				case 3:
					this.ShowPanel4.Controls.Add(frm);
					break;
                                ......................

			}
		}

und funktioniert.

Das solltest du auf keinen Fall tun. Das UserControl sollte passende Properties und Methoden für seine Benutzung zur Verfügung stellen.

Werde es mal so probieren.

20.08.2008 - 09:37 Uhr

Zuerst mal danke für deine Anwort.

Entweder änderst du den Parent erst bei einem wechsel des Tabs

Wie ändert man die Parent ?

Was ist die bessere Lösung?
In dem UserControl sollen die Grunddaten der Person stehen("Name,Vorname,....")

Wie kann ich auf die Controls im UserControl zugreifen?

20.08.2008 - 08:23 Uhr

Hallo, vielleicht kann mir jemand von euch weiter helfen da ich in C# noch nicht ganz verstanden habe.

Zu meinem Problem.
Habe eine Form das ein TabControl beinhaltet welches mehere Tab hat.
Jedes Tab hat einen Panel jedes dieser Panel soll das gleiche UserControl
zugewiesen bekommen. Leider sehe ich das UserControl immer nur auf der
letzten Tab-Seite.



// Benutzerkontroll zuweisen
Asd_Stamm frm = new Asd_Stamm();

this.ShowPanel1.Controls.Add(frm);
this.ShowPanel2.Controls.Add(frm);
this.ShowPanel3.Controls.Add(frm);
this.ShowPanel4.Controls.Add(frm);
this.ShowPanel5.Controls.Add(frm);
this.ShowPanel6.Controls.Add(frm);
this.ShowPanel8.Controls.Add(frm);

In dem UserControl sollen Informationen stehen die ich gerne auf allen Tab
sehen möchte.

Hat jemand einen Tipp?

07.01.2008 - 14:48 Uhr

Bin zu einer Lösung gekommen.

Hätte aber noch eine Frage.

Wenn ich jetzt eine Zelle im DataGrid einen Wert eingebe und verlasse mit der Maus das DataGrid, dann steht das DataGrid immer noch im Edit-Modus.

Wie kann ich die Änderung bei "Leave-Event des DataGrid" speichern?

07.01.2008 - 13:25 Uhr

Die Frage riecht danach, dass du noch überhaupt nicht firm in Sachen OO bist. Ich empfehle, nochmal ein paar Kapitel dazu in deinem Buch zu lesen.

Stimmt.

Aber die Antwort heisst: Definiere oldRow als (private) Variable in deinem Forms-Objekt, auf der sich das DataGrid befindet.

Verstehe ich nicht ganz. Stehe vermutlich total auf dem Schlauch

07.01.2008 - 11:52 Uhr

Wie oder wo kann ich mir denn dann am besten die alte Zeile merken?

07.01.2008 - 10:50 Uhr

Komme mal wieder nicht weiter.

Versuche gerade beim CurrentCellChanged-Event des DataGrid den "Object sender" auszulesen und mir den Wert von oldRow in einer Variabel zu merken.

Im Überwachungsfenster bekomme ich bei ((DataGrid)sender).oldRow den Wert 2 angezeigt.

Möchte ich diesen Wert an die dgBestand.CurrentCell = new DataGridCell(((DataGrid)sender).oldRow,3) übergeben, bekomme ich beim Kompilieren die Fehlermeldung "Auf 'System.Windows.Forms.DataGrid.oldRow' ist der Zugriff aufgrund der Sicherheitsebene nicht möglich"

Was mach ich Falsch?

Möchte gerne wenn ich die Zeile im Grid wechsel prüfen ob die Zelle 1 ≤ Zelle 2 ist. Wenn nicht dann makiere wieder Zelle 2 in der alten Reihe.

12.12.2007 - 10:35 Uhr

Geht das nicht Einfacher?

cs = new DataGridTextBoxColumn();
cs.MappingName = "AbVerbleib"; // Public property name
cs.HeaderText = "Verbleib";
cs.Format = "c";
cs.Width = 80;
ts.GridColumnStyles.Add(cs);

Wenn ich in Format "c" Zuweise dann bekomme ich die Spalte als Euro angezeigt.
Es muss doch noch andere Formate wie "C" geben.

12.12.2007 - 09:56 Uhr

Hallo,

vielleicht könnt ihr mir weiter helfen.

Such eine Liste über Formate die ich im DataGrid bei DataGridTextboxColumn.Format einstellen kann.

Habe im Internet nix darüber gefunden.

danke

27.11.2007 - 10:41 Uhr

Hallo jungs und Mädels,

wie kann ich den einen String den ich aus einer Datenbank lese
in eine Guid umwandeln?

Der String steht so in der Datenbank "c3aed445-0373-4923-9d63-8ec188c9da77"

Sollte doch eigentlich so gehen System.Guid(row[0].ToString())
oder?

26.11.2007 - 08:27 Uhr

Die Funktion Nz() funzt ja in Access.

Habe wie "juetho" geschrieben hat die Exception mit der Kombobox ausgegeben.

Die Error-Meldung: "Undefinierte Funktion 'Nz' in Ausdruck."

Komme einfach zur keiner Lösung.

Hat jemand noch einen Tipp?

23.11.2007 - 11:53 Uhr

Danke juetho

das mit der MessageBox hat mir schon mal weiter geholfen.

Liegt an der Funktion NZ() die ich in dem View benutze aber was mache ich jetzt?

23.11.2007 - 11:37 Uhr

Außerdem sollte die Connection nicht dauerhaft existieren

Stimmt habe hier die Close() Methode vergessen.

Ändert aber nix an meinem Problem 🙁

23.11.2007 - 11:12 Uhr

Hier der Code.

		public DataTable ExecuteDataTable(string Sql) 
		{
			open();
			myAdapter = new OleDbDataAdapter(Sql, myConnection);
			myDataTable = new DataTable();

			DataSet custDS = new DataSet();
			DataTable custTable = custDS.Tables.Add("CustTable");

			myAdapter.Fill(myDataTable);

			return myDataTable;

		}

und hier der Select-String "Select Ab_ID, Ab_ProduktID, Ab_Dicke, Ab_Breite, Ab_Laenge, Bestand, Reserviert, Verbleib From qry_Produktdetail"

Der Code für das füllen der DataTable ist immer der gleiche.

23.11.2007 - 10:28 Uhr

Hallo,

habe ein Problem mit dem füllen des OleDbDataAdapter.

Hier springt mir das Programm immer raus "myAdapter.Fill(myDataTable);"wenn ich den Adapter füllen möchte.

Dies geschiedt nur bei einem View aus einer Access-Datenbank. Bei den anderen Views macht er es. Kopiere ich den SQL-Select aus dem Überwachungsfenster und gebe diesen in Access ein bekomme ich das Ergebnis angezeigt.

Hat jemand einen Tipp?

Komme nicht auf den Fehler.

Genaue Fehlermeldung lautet:
Eine nicht behandelte Ausnahme des Typs 'System.Data.OleDb.OleDbException' ist in system.data.dll aufgetreten.

26.10.2007 - 10:03 Uhr

Danke für eure Tipps.

Habe es jetzt so gemacht.


private void llb_ArztSerach_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
		{
			PointLinkLabel();
			this.llb_ArztSerach.LinkColor	= Color.Red;

			if(SetPanelStatus("SearchArztForm") == false)
			{
				SearchArztForm frm = new SearchArztForm();
				this.SearchPanel.Controls.Add(frm);
			}
		}

private bool SetPanelStatus(string sUserControl)
		{
			// Panel durchlaufen und prüfen ob das Userontrol
			// sich in der Auflistung befindet. Wenn ja dann
			// geben wir true zurück

			bool bolMerker = false ;
			foreach (Control c in SearchPanel.Controls)
			{
				if (c is UserControl)
				{    
					//MessageBox.Show(c.Name);
					if(c.Name.ToString() == sUserControl)
					{
						c.Visible = true;
						bolMerker = true;
					}
					else
						c.Visible = false;
				}
			}
			return bolMerker;
		}
25.10.2007 - 15:55 Uhr

Eigentlich möchte ich prüfen ob im panel schon das Benutzersteuerelement vorhanden ist. Wenn ja mach es sichbar.

Das habe ich aber nicht hinbekommen. Deshalb mein neuer Ansatz. Hier kann jetzt immer nur ein Benutzersteuerelement im Panel sein. Ist das gleich drin dann brauche ich ja nicht zuerst löschen um das gleiche wieder hinzu zu fügen.

Ich bekomme aber immer hier
if(SearchPanel.Controls[0].Equals(frm)== false)

false raus.

25.10.2007 - 14:53 Uhr

Hallo,

habe mal ne frage zum Panel.

Habe mehrere LinkLabel auf meiner Form und ein Panel. Wenn ich auf ein LinkLabel clicke dann füge ich dem Panel ein Benutzersteuerelement hinzu.

Wenn ich jetzt wieder auf den gleichen LinkLabel clicke dann wird dem Panel wieder eins hinzugefügt.

Wollte es jetzt so prüfen was aber nicht geht. Was ist den daran falsch?


private void llb_Arzt_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
		{
			PointLinkLabel();
			this.llb_Arzt.LinkColor	= Color.Red;

			ArztSearchForm frm = new ArztSearchForm();
			if(SearchPanel.Controls.Count < 1)
			{
				this.SearchPanel.Controls.Add(frm);
			}
			else
			{
				if(SearchPanel.Controls[0].Equals(frm)== false)
				{
					SearchPanel.Controls.RemoveAt(0);
					this.SearchPanel.Controls.Add(frm);
				}
			}
			this.llb_Arzt.ForeColor	= Color.Red;
		}