Laden...

Forenbeiträge von tequila slammer Ingesamt 253 Beiträge

04.07.2007 - 09:16 Uhr

Ich gebe beim Erstellen des xml Files schon an, dass es UTF-8 codiert ist. Einen Fehler möchte ich aber nicht ausschliessen, daher mal mein Code zum Erstellen des File.


System.Xml.XmlTextWriter xmlWriter = new System.Xml.XmlTextWriter(tbSettingsCatalogSaveDir.Text.Trim() + "\\" + tbSettingsCatalogFileName.Text.Trim() + ".xml", Encoding.UTF8);
xmlWriter.Formatting = System.Xml.Formatting.Indented;
xmlWriter.WriteStartDocument();

03.07.2007 - 15:04 Uhr

Ich habe es nun erstmal wie folgt gelöst.
Ich erstelle die xml Datei. Und lese sie wieder ein und suche die Zeichenkombination um sie dann zu entfernen und überschreibe dann die xml Datei wieder.

Finde ich nicht schön aber anscheinend geht es nicht anders, da die Zeichenkombination beim Debugen nicht zu sehen ist. Erst beim öffnen mit dem Editor sehe ich sie.

03.07.2007 - 12:48 Uhr

Hallo Svenson,

kann ich leider nicht, da nicht ich validiere, sondern eine andere Stelle.

03.07.2007 - 12:37 Uhr

Hallo herbivore,

ich schreibe den String wie folgt weg


...
xmlWriter.WriteElementString("TITLE", reader["Semtitel1"].ToString().Trim().Replace("", "") + " " + reader["Semtitel2"].ToString().Trim().Replace("", "") + " " + reader["Semtitel3"].ToString().Trim().Replace("", ""));

...

Demnach würde auch nur der geänderte String im xml stehen.

03.07.2007 - 12:04 Uhr

Hallo Forum,

schon oft konnte mir die Suche helfen bevor ich einen neuen Beitrag schreiben musste, aber nun benötige ich doch eure Hilfe.

Ich lese aus einer Access Datenbank ein Textfeld aus und schreibe den String in ein xml File weg. Beim validieren des xml bekomme ich immer wieder die Zeichenfolge  angezeigt. Anscheinend ist es ein Steuerzeichen für einen Zeichenumbruch.

Versuche es mit toString().Replace("","") zu entfernen scheiterten. Leider auch die, anstelle  durch \r\n bzw. \n\r zu ersetzen.

Habt Ihr noch eine Idee wie ich dieses Problem in den Griff bekomme.
Das xml File verwendet UTF-8 als Zeichensatz.

Google war bisher nicht sehr kooperativ, was Lösungen angeht.

Danke schonmal

08.06.2007 - 10:13 Uhr

danke für den Hinweis.

statt Dictionary<string,string> sollte man List<KeyValuePair> nutzen.

07.06.2007 - 23:13 Uhr

ich möchte das Thema noch einmal aufgreifen, da ich im Moment ein ähnliches Problem habe.

@FZelle: ich habe deine vorgeschlagene Methode umgesetzt und mir für mein Problem ein <string, string>Dictionary gebaut. Wenn ich nun meiner Combobox die DataSource zu weisen möchte erhalte ich die Fehlermeldung:

"Das komplexe DataBinding akzeptiert als Datenquelle entweder IList oder IListSource."

Was habe ich falsch gemacht?

Mein Code:


Dictionary<string, string> languageElements = new Dictionary<string, string>();
foreach (string language in System.IO.File.ReadAllLines(Application.StartupPath+"\\languages.csv",Encoding.Default))
{
     string[] language_desc = language.Split(new char[] { ';' });
     languageElements.Add(language_desc[0], language_desc[1]);
}
cbCatalogLanguage.DataSource = languageElements;
cbCatalogLanguage.DisplayMember = "value";
cbCatalogLanguage.ValueMember = "key";
06.06.2007 - 11:36 Uhr

ok. Danke für eure Berichte.

05.06.2007 - 11:22 Uhr

ok. danke für eure auskünfte. Ich dachte eigentlich das mit dem Microsoft Visual Web Developer 2005 Express der Kernpunkt mehr auf WebEntwicklung gelegt wurde und dem entsprechend auch AJAX usw. mehr eingebunden ist. Aber das scheint nach euren Antworten nicht der Fall zu sein oder doch?

05.06.2007 - 09:51 Uhr

Ich möchte gerne einmal die Microsoft Visual Web Developer 2005 Express Editon ausprobieren, jedoch habe ich gehört, dass man diese nicht zusammen mit einer anderen VS Umgebung (in meinem Fall die VS2005 Prof Edition) installieren sollte. Es sei dann mit Problemen zu rechnen. Kann mir einer von euch nähere Informationen zum Wahrheitsgehalt geben? Ich möchte nämlich nur ungern meine Projekte, Einstellungen usw. verlieren.

Danke schon mal im vorraus.

01.06.2007 - 09:36 Uhr

Hallo JackSparrow,
neben den schon genannten Links möchte ich dir ein kleines Beispiel zeigen:


using System.ServiceProcess;

ServiceController service = new ServiceController("Servicename");

//ein Service kann verschiedene Zustände haben, die du mit 'Status' abfragen kannst

if (service.Status == ServiceControllerStatus.Running)
{
     //je nach Zustand kannst du ihn dann stoppen, starten usw.
    service.stop();
}

Allerdings habe ich bei meinem Service festgestellt, dass das beenden sehr lange dauert. Deshalb hier auch gleich mal meine Frage ans Forum.

Mein Service durchsucht in regelmäßigen Abständen ein Verzeichnis nach bestimmten Dateitypen. Möchte ich ihn nun über beine GUI beenden, dann dauert dies sehr lange. Wie kann ich das beschleunigen?

Meine OnStop Methode enthält nur dabei nur zwei Einträge:

timer.Stop();
timer.Enabled = false;

Nachtrag:
Wenn ich den Dienst versuche über Verwaltung DIenste zu beenden erhalte ich eine Meldung: Fehler 1053 Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung.

Ich möchte nur ungern daher gehen und einfach den Prozess killen.

30.04.2007 - 17:00 Uhr

Irgendwie ist mir das ein wenig peinlich aber ich habe ein Projekt, dass mehrere Projektmappen beinhaltet. Nun habe ich in einer dieser Mappen Klassen erstellt, die dort und auch in einer anderen Mappe benötigt werden. Wie binde ich diese ein?

Ich habe schon ein Verweis auf die Klassen enthaltende Mappe gemacht, aber ansprechen kann ich sie trotzdem nicht.

Danke schonmal für eure Hilfe.

30.01.2007 - 16:11 Uhr

Ich denke auch, dass hier dann wohl Tabellen besser angebracht sind.

29.01.2007 - 18:06 Uhr

ich habe gar nicht gesehen, das es da noch weitere seiten gibt. Ich lese mal weiter und wenn mir nichts hilft melde ich mich wieder.

Danke erstemal

27.01.2007 - 17:33 Uhr

das erscheinen klappt schon. Nur das Schließen nach dem die eigentliche Form da ist nicht.

27.01.2007 - 13:37 Uhr

MittelDeutscherAktionClub? www.mdac.de 😉
Ich habs schon gefunden. Danke für den Tipp.

27.01.2007 - 13:01 Uhr

wenn ich es einfüge, dann erhalte ich eine NullReferenceException
Andererseits steht es ja im TimerTick, da das Splash ja wieder rausfaden soll.

27.01.2007 - 12:45 Uhr

Hallo Forum,

durch die Suche habe ich erfahren, wie man einen "deluxe" Splashscreen bauen kann. Ich habe dabei diese Anleitung benutzt, um mich in die Thematik einzuarbeiten. Wobei ich nicht alles umgesetzt habe, da mir erstmal wichtig ist, das Anzeigen und Schliessen des Splashes zu erreichen.

Nun ergibt sich für mich folgendes Problem, das ich einfach nicht lösen kann.

Der Aufruf/ Start des Splashscreens funktioniert prima. Meine MainForm baut sich auch auf, aber der Splash verschwindet nicht mehr nach Aufrufen der Anweisung. Es kommen keine Fehlermeldungen und beim Debuggen geht er auch rein.

Ich frage mich nun was ich da falsch verstanden habe?

Damit ihr auch wisst was ich gemacht habe mal mein Code im Anhang.

Splash:


static SplashScreen ms_frmSplash = null;
static Thread ms_oThread = null;

private double m_dblOpacityIncrement = .05;
private double m_dblOpacityDecrement = .1;
private const int TIMER_INTERVAL = 50;

public SplashScreen()
{
    InitializeComponent();
    this.ClientSize = this.BackgroundImage.Size;
    this.Opacity = .0;
    timer1.Interval = TIMER_INTERVAL;
    timer1.Start();
}

//Statischer Einstiegspunkt
static private void ShowForm()
{
    ms_frmSplash = new SplashScreen();
    Application.Run(ms_frmSplash);
}

static public void ShowSplashScreen()
{
    if (ms_frmSplash != null)
    {
        return;
    }
    ms_oThread = new Thread(new ThreadStart(SplashScreen.ShowForm));
    ms_oThread.IsBackground = true;
    ms_oThread.ApartmentState = ApartmentState.STA;
    ms_oThread.Start();
}

//Statische Methode zum Beenden des Splashes
static public void CloseForm()
{
   if (ms_frmSplash != null && ms_frmSplash.IsDisposed == false)
   {
       ms_frmSplash.m_dblOpacityIncrement = - ms_frmSplash.m_dblOpacityDecrement;
   }
   ms_frmSplash = null;
}

private void timer1_Tick(object sender, EventArgs e)
{
    if (m_dblOpacityIncrement > 0)
    {
        if (this.Opacity < 1)
        {
            this.Opacity += m_dblOpacityIncrement;
        }
    }
    else
    {
        if (this.Opacity > 0)
        {
            this.Opacity += m_dblOpacityIncrement;
        }
        else
        {
            this.Close();
        }
    }
}

MainForm:


public MainForm()
{
    SplashScreen.ShowSplashScreen();
    InitializeComponent();
    SplashScreen.CloseForm();
}

Testweise in der Program.cs


static void Main()
{
    SplashScreen.ShowSplashScreen();
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    SplashScreen.CloseForm();
    //Application.Run(new SplashScreen());
    Application.Run(new MainForm());
}

27.01.2007 - 12:20 Uhr

MDAC und Jet, was ist das?

26.01.2007 - 17:33 Uhr

Hallo Forum, ich greifen den Beitrag mal auf und stelle meine Frage hier.

Ich habe ein ähnliches Problem nur, dass ich anstelle eines SQL Servers eine Access Datenbank (*.mdb) mitgeben möchte. Reicht es in diesem Fall aus, dass .net Framework, die Applikation und die *.mdb Datei mitzugeben?

Danke schonmal im vorraus

24.01.2007 - 18:37 Uhr

@ Stube: du hast Post.

@ cx°: Ich denke nicht, das er ein Onlinebestellsystem sucht. Wenn doch habe ich dafür sogar schon eine Lösung 😁

hier mal eine kleine Demo. Wer mehr wissen möchte schreibt mich an.

24.01.2007 - 18:29 Uhr

Ich verweise nur ungern auf andere Foren, aber da es sich hier nicht um c# sondern um css handelt, kann man das denke ich tun.

Vielleicht hilft dir das hier weiter.

http://www.tutorials.de/forum/css/224243-spaltenlayout-innerhalb-eines-containers.html?highlight=css+spaltenlayout

20.01.2007 - 19:27 Uhr

ah, ok. Also meine Klasse gibt ein Array an das Form zurück und daraus wird dann die ListBox gefüllt. Richtig?

20.01.2007 - 19:25 Uhr

richtig. So ganz verstanden habe ich es nicht, das muss ich zu geben.
Ist jetzt eine blöde Frage, aber kann mir das einer erklären (vielleicht mit codesnippets), was ich ändern muss?

20.01.2007 - 16:45 Uhr

Hallo Forum,

ich versuche schon seit Tagen in meiner Applikation einen mehrseitigen Ausdruck hinzubekommen. Dabei bekomme ich immer nur zwei Lösungen heraus:

  1. der Ausdruck ist tatsächlich 2seitig, dann steht allerdings das von Seite eins auch auf Seite 2

  2. der Ausdruck ist einseitig. Das von der "zweiten" Seite ist dann aber über das der ersten Seite geschrieben. Sprich das Dokument ist einseitig.

Das mache ich nur falsch.
Anbei mal etwas Code:

Lösung 2:


void printDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
     DrawString(e);
}

public void DrawString(System.Drawing.Printing.PrintPageEventArgs e)
{
     Graphics zeichnen = e.Graphics;
     Font schrift = new Font("Arial", 10);
     Pen stift = new Pen(Color.Black);

     if (lvData.Items.Count != 0)
     {
          for (int i = 0; i < lvData.Items.Count; i++)
          {
               zeichnen.DrawString(lvData.Items[i].SubItems[0].Text, schrift, stift.Brush, start_x, start_y);
               zeichnen.DrawString(lvData.Items[i].SubItems[1].Text, schrift, stift.Brush, start_x += 80, start_y);
               zeichnen.DrawString(lvData.Items[i].SubItems[2].Text, schrift, stift.Brush, start_x += 40, start_y);

               start_x = 70;
               if (start_y <= 740)
               {
                    start_y += 15;
                    e.HasMorePages = false;
               }
               else
               {
                    e.HasMorePages = true;
                    start_y = 100;
               }
          }
     }
}

Lösung 1:


void printDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
     DrawString(e);
     if (start_y >= 740)
     {
          e.HasMorePages = true;
          start_y = 100;
     }
     else
     {
          e.HasMorePages = false;
     }
}

public void DrawString(System.Drawing.Printing.PrintPageEventArgs e)
{
     Graphics zeichnen = e.Graphics;
     Font schrift = new Font("Arial", 10);
     Pen stift = new Pen(Color.Black);

     if (lvData.Items.Count != 0)
     {
          for (int i = 0; i < lvData.Items.Count; i++)
          {
               zeichnen.DrawString(lvData.Items[i].SubItems[0].Text, schrift, stift.Brush, start_x, start_y);
               zeichnen.DrawString(lvData.Items[i].SubItems[1].Text, schrift, stift.Brush, start_x += 80, start_y);
               zeichnen.DrawString(lvData.Items[i].SubItems[2].Text, schrift, stift.Brush, start_x += 40, start_y);
                    
               start_x = 70;
               start_y += 15;
          }
     }
}

20.01.2007 - 16:31 Uhr

hallo herbivore,

deinen und den anderen Postern Ratschläge befolgend habe ich mir für mein Problem eine Klasse gebaut. Nun stehe ich allerdings vor dem Problem, wie diese Klasse meine Listbox von Form eins füllen kann. Die Listbox ist ja in der Klasse unbekannt. Kannst du mir da vielleicht nochmal helfen?

15.01.2007 - 13:54 Uhr

Hallo Forum,

Ich habe die Suche zum Thema: Methodenaufrufe benutzt aber nur bedingt für mich nachvollziehbares gefunden.

Deshalb meine Frage:

Ich habe in meiner Form1 eine Methode, die eine Datenbankabfrage durchführt und die Daten dann in ein ListView auf Form1 schreibt.

Nun gibt es eine Form2, die Daten in diese Datenbank schreibt. Sie soll aber auch die Methode aus Form1 aufrufen, damit der Benutzer auch die aktuelle Daten im ListView hat.

Wie kann ich das Realisieren?
Mir geht es hierbei nur bedingt um Codebeispiele, sondern um eine kurze Erklärung
wie das ganze von statten gehen muss. Ich möchte ja was lernen. 🙂

14.01.2007 - 18:31 Uhr

leider bist du 130km zu weit weg. Aber ansich klingt das Projekt interessant, somal ich ebenfalls häufiger mit dem Pizzagewerbe zu tun habe. Kannst dich ja mal per pn oder email melden vielleicht kann man trotzdem was machen.

08.01.2007 - 20:32 Uhr

Ein freundliches Hallo an euch.

Ich muss mich beruflich mit dem MS Sharepoint Server 2007 auseinandersetzen und bin nun auf der Suche nach Büchern und vorallem Schulungen. Kennt jemand von euch gute Schulungseinrichtungen, die diese Software im Angebot haben?

Weiterhin lese ich oft auch etwas vom MS Office SharePoint Server 2007. Ist das das gleiche?

Mfg

28.12.2006 - 13:34 Uhr

Wenn ich das mit TabPages mache, sieht man doch die Reiter oder nicht?

Wie verbinde ich dann mein Control mit dem ausgewählten Node?

28.12.2006 - 12:02 Uhr

Wie realisiere ich so ein UserControl? In meiner ToolBox Leiste ist das nicht enthalten.

28.12.2006 - 11:51 Uhr

Hallo alle miteinander.

Erstmal wünsche ich allen einen guten Rutsch ins neue Jahr.

Ich möchte gerne folgendes realisieren:
Mein Form hat einen SplittContainer. Auf der linken Seite habe ich ein TreeView mit Nodes. Je nach angeklicktem Node soll auf der rechten Seite ein anderes Menü(Form) sichtbar sein, vergleichbar mit der "Avira Konfiguration".

Ich weiß halt nicht wie ich die rechte Seite hinbekomme und würde mich deshalb über Tipps freuen.

Mfg

Sebastian

06.12.2006 - 19:33 Uhr

Ich habe ein Programm geschrieben, dass Daten in eine Accessdatenbank zwischenspeichert. Klickt der Benutzer auf Syncronisieren, so sollen die Daten der Datenbank an ein php Script auf dem Webserver übergeben werden und dann dort verarbeitet werden.

Im Moment hängt es wie ich die Daten an das php script übergeben kann.
Ich hatte daran gedacht das Script über das Programm anzusprechen ohne ein Browserfenster zu öffnen und dann die Daten über Post mitzugeben. Allternativ via GET aber nur wenn es gar nicht anders geht.

In der Suche konnte ich mit Web oder System.Web nicht das passende finden.

Über Denkanstöße und kleine Schubser in die richtige Richtung würde ich mich freuen.

mfg

Sebastian

23.11.2006 - 19:47 Uhr

da fehlte wohl der Constructorteil 🙂

Ich habe die [] im name und image gesetzt seit dem geht es auch. Vielen Dank nochmal.

23.11.2006 - 07:05 Uhr

Die AddWithValue Variante hatte ich davor ausprobiert aber da funktionierte es ebenfalls nicht. Wahrscheinlich wegen der reservierten Wörter. Ich probiere es heute Nachmittag mal aus und melde mich wieder.

22.11.2006 - 19:12 Uhr

Entschuldigung. Das war noch vom letzten test.


query.CommandText = "INSERT INTO menue(name, image, anordnung, visible) VALUES(?,?,?,?)"; 

Es gibt zwar 5 Spalten aber die erste ist autoincrement.
Tabellenaufbau ist wie beschrieben id, name, image, anordnung, visible.
Es ändert nichts an der Fehlermeldung egal ob oberes oder nachfolgendes Bsp:


query.CommandText = "INSERT INTO menue(id, name, image, anordnung, visible) VALUES(null, ?,?,?,?)";
22.11.2006 - 18:29 Uhr

um kein neues Thema auf zu machen habe ich auch mal eine Frage.
Ich möchte gerne Daten in eine Datenbank schreiben, die den Aufbau
id (PK)
name
image
anordnung
visible

hat. Ich hatte bisher immer Code aus meinen anderen Projekten verwendet aber auf einmal gehts hier nicht mehr? 🤔

Ich denke mal es geht um einen logischen Fehler, da ich ansonsten so weit alles schon geprüft habe.

Vorne weg noch die Fehlermeldung:"Syntaxfehler in der INSERT INTO Anweisung".

Mein Code sieht wie folgt aus:


string connection_string = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=test.mdb; JET OLEDB:Database Password=";
System.Data.OleDb.OleDbConnection verbindung = null;
System.Data.OleDb.OleDbCommand query = new System.Data.OleDb.OleDbCommand();

query.CommandText = "INSERT INTO menue(name, image, anordnung, visible) VALUES(null,?,?,?,?)";
query.Connection = verbindung;

//Parameter
query.Parameters.Add("@name", System.Data.OleDb.OleDbType.VarChar);
query.Parameters.Add("@image", System.Data.OleDb.OleDbType.VarChar);
query.Parameters.Add("@anordnung", System.Data.OleDb.OleDbType.VarChar);
query.Parameters.Add("@visible", System.Data.OleDb.OleDbType.VarChar);

 //Parameterwerte setzen
query.Parameters[0].Value = tbProductcategorieName.Text;
query.Parameters[1].Value = tbProductcategorieImage.Text;
query.Parameters[2].Value = tbProductcategoriePosition.Text;
if (chbProductCategorieVisible.CheckState.ToString() == "checked")
{
        query.Parameters[3].Value = "1";
}
else
{
        query.Parameters[3].Value = "0";
}

verbindung.open();
try
{
        query.ExecuteNonQuery();
...

15.11.2006 - 14:47 Uhr

danke für den Hinweis.
Ich habe mich nun doch für den .net Connector entschieden allerdings finde ich die Beispielanwendung auf mySql.com nicht mehr. Hat die eventuell noch jemand parat?

Danke.

13.11.2006 - 20:22 Uhr

Hallo,

nach studieren der Suche habe ich bisher eine Frage.

Ich benutze folgenden ConnectionString, denn ich mir von connectionstrings.com
erlesen habe:
@"Provider=rdbms.strato.de;Data Source=DBtest;User Id=Utest@rdbms.strato.de;Password=kennstdu;";

Jedoch erhalte ich immer die Meldung:
"Der rdbms.strato.de-Provider ist auf dem lokalen Computer nicht registriert."
Bisher habe ich auch nichts installiert.
Meine Frage ist: Was will er mir sagen und wie kann ich es beheben?

Mein Code sieht wie folgt aus:


//string connection_string = @"Provider=MySQLProv;Data Source=mydb;User Id=myUsername;Password=myPassword;";
string connection_string = @"Provider=rdbms.strato.de;Data Source=DB1tses;User Id=Utest@rdbms.strato.de;Password=tst;";
System.Data.OleDb.OleDbConnection verbindung = new System.Data.OleDb.OleDbConnection(connection_string);

try
{
      verbindung.Open();
       MessageBox.Show("verbindung steht");
}
catch (Exception ex)
{
       MessageBox.Show(ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
       verbindung.Close();
}

18.10.2006 - 13:04 Uhr

Kannst du mir kurz erklären wie sich

new object[] { null, null, table["TABLE_NAME"],null }
new object[] { null, null, null, "TABLE" }

zusammensetzt?

Wovon ist abhängig? Oder gibt es Quellen wo ich das für "dummies" erklärt bekomme?

17.10.2006 - 20:31 Uhr

Ich bin nun soweit, dass ich die Namen auslesen kann aber nicht auf die enthaltenen Datenfelder.

Leider weis ich auch nicht mehr weiter. Mein Büche geben da leider nichts mehr her. Anbei mal mein bisheriger Code:


baum.Nodes.Clear();

string connection_string = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + pfad + "; JET OLEDB:Database Password=";

System.Data.OleDb.OleDbConnection verbindung = new System.Data.OleDb.OleDbConnection(connection_string);
verbindung.Open();
 DataTable schemaTable = verbindung.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

//Mein Ansatz
DataTable schemaTableColumn = verbindung.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, new object[] { null, null, null, "Field" });
                
foreach (DataRow table in schemaTable.Rows)
{
         baum.Nodes.Add(table["TABLE_NAME"].ToString());
          
         //Test
         foreach (DataColumn column in schemaTableColumn.Rows)
         {
                  baum.Nodes[0].Nodes.Add(column.ColumnName);
         }
}

verbindung.Close();

label4.Text = Convert.ToString(schemaTable.Rows.Count);

Leider verstehe ich nicht warum es nicht klappt. Keine Fehlermeldung nichts. 🤔

17.10.2006 - 10:50 Uhr

Nun ja. Es kommt keine Fehlermeldung, weil ich noch nicht mehr habe.
Ich wollte mit

label2.Text = schemaTable.TableName;

Die Tabellennamen auslesen jedoch bekomme ich immer "Tables" zurück.
Die Tabellen heißen aber Tabelle1 und Tabelle2

16.10.2006 - 19:42 Uhr

ich habe nun ein Problem mit dem Auslesen der Datenbankinformationen.
Laut den geposteten Links kann ich mit:

System.Data.OleDb.OleDbConnection verbindung = new System.Data.OleDb.OleDbConnection(connection_string);
                verbindung.Open();
                DataTable schemaTable = verbindung.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });

Tabellen und deren Ansichten angezeigt bekommen.

Mein Problem ist nun wie ich die Anzahl der Tabellen und deren Namen ermitteln kann.

Mein Ansatz:

label4.Text = Convert.ToString(schemaTable.Rows.Count);

Was mache ich falsch?

13.10.2006 - 18:56 Uhr

danke vielmals.

Die Suche hatte ich benutzt aber gänzlich in die falsche Richtung gesucht.

12.10.2006 - 15:46 Uhr

bisher nicht. Mein Problem ist, dass ich keinen Ansatz dafür finde ganze Tabellennamen und deren Feldnamen auszulesen.

12.10.2006 - 09:52 Uhr

Hallo.

Ist es möglich in C# nach Auswahl einer Datenbank(SQL oder Access) ihre Tabellen und deren Felder auszulesen und in Form eines Baumes anzeigen zulassen?

Ich habe ein Programm geschrieben, das ich nun so erweitern möchte, dass der Benutzer einstellen kann, welche Felder in eine xml Datei geschrieben werden sollen. Bisher muss ich das im Code angeben, was mir nicht so gefällt, da bei Änderungen der Datenbankstruktur Fehler auftreten würden.

Mfg

01.09.2006 - 08:36 Uhr

Ok jetzt weis ich wieder etwas mehr. Danke schön.

30.08.2006 - 08:11 Uhr

ich habe mal etwas gegooglet und folgendes gefunden:

http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_15_011.htm

Quelle ist das openbook von Galileo Computing

In unserer Suche habe ich ähnliche Probleme wie meins entdecken können und konnte nichts gefährliches herauslesen. Das liegt mit ziemlich hoher Wahrscheinlichkeit aber ehr an meinem recht geringen Erfahrungswissen mit C#. Ich würde dich daher um eine kleine Aufklärung bitten.

30.08.2006 - 07:33 Uhr

ich danke euch für die hilfreichen Antworten. Ich konnte mein Problem nun lösen in dem ich hinter jeder Textänderunge ein Application.doEvents(); eingefügt habe.

Ich werde mich am We mal näher mit dem Thema Threads auseinander setzen.
Danke nochmal.

P.s.:

@Borg: Wie hätte man das anders lösen können? Ich bin noch recht neu und würde mich über Verbesserungsvorschläge sehr freuen.

29.08.2006 - 09:22 Uhr

geht nicht. Intellisence bietet mir dies nicht an.
Ich habe herausgefunden, dass ich auch ein normales TextLabel nicht verändern kann. Es liegt also anscheinend nicht am ToolStrip.

Ich poste mal meinen C# .net 2.0 Code der nach Ausführen des Buttons abläuft.
Eventuell habe ich auch einen Fehler gemacht und sehe ihn nicht.

private void button1_Click(object sender, EventArgs e)
        {
            if (filename.Text != "")
            {
                string db_pfad = System.IO.File.ReadAllText("db_pfad.dat");

                //ConnectionString entfernt :-)

                //Instanzierung der Klassem verbindung, query, reader
                System.Data.OleDb.OleDbConnection verbindung = new System.Data.OleDb.OleDbConnection(connection_string);
                System.Data.OleDb.OleDbCommand query = new System.Data.OleDb.OleDbCommand();
                System.Data.OleDb.OleDbDataReader reader;

                //Festlegen des Abfragestrings und Übergabe der verbindung an die query für Kurse
                query.CommandText = "SELECT * FROM pas";
                query.Connection = verbindung;

                toolSt.Text = "Öffne Datenbank";


                verbindung.Open();
                reader = query.ExecuteReader();

                string aktueller_course = null;
                string aktueller_anbieter = null;

                string courses = null;
                string suppliers = null;

                label3.Text = "Lese Kursdaten";
                toolSt.Text = "Lese Kursdaten";

                //Anweisung was mit dem Datensatz den er aktuell gelesen hat passieren soll für Kurse
                while (reader.Read())
                {
                    aktueller_course = course_temp;

                    string name = null;
                    string cs_id = null;
                    string desc_short = null;
                    string desc_long = null;
                    string info_link = null;
                    string cs_goal = null;
                    string cs_supplierid = null;
                    string cs_promotion = null;
                    string cs_promotion_desc = null;
                    string cs_degree = null;
                    string cs_price = null;
                    string cs_price_info = null;
                    string s_start_date = null;
                    string s_end_date = null;
                    string s_duration_est_num = null;

                    if (reader["CS_NAME"] != DBNull.Value)
                    {
                        name = Convert.ToString(reader["CS_NAME"]);
                    }
                    if (reader["CS_ID"] != DBNull.Value)
                    {
                        cs_id = Convert.ToString(reader["CS_ID"]);
                    }
                    if (reader["CS_DESC_SHORT"] != DBNull.Value)
                    {
                        desc_short = Convert.ToString(reader["CS_DESC_SHORT"]);
                    }
                    if (reader["CS_DESC_LONG"] != DBNull.Value)
                    {
                        desc_long = Convert.ToString(reader["CS_DESC_LONG"]);
                    }
                    if (reader["CS_INFOLINK"] != DBNull.Value)
                    {
                        info_link = Convert.ToString(reader["CS_INFOLINK"]);
                    }
                    if (reader["CS_GOAL"] != DBNull.Value)
                    {
                        cs_goal = Convert.ToString(reader["CS_GOAL"]);
                    }
                    if (reader["CS_SUPPLIERID"] != DBNull.Value)
                    {
                        cs_supplierid = Convert.ToString(reader["CS_SUPPLIERID"]);
                    }
                    if (reader["CS_PROMOTION"] != DBNull.Value)
                    {
                        cs_promotion = Convert.ToString(reader["CS_PROMOTION"]);
                    }
                    if (reader["CS_PROMOTION_DESC"] != DBNull.Value)
                    {
                        cs_promotion_desc = Convert.ToString(reader["CS_PROMOTION_DESC"]);
                    }
                    if (reader["CS_DEGREE"] != DBNull.Value)
                    {
                        cs_degree = Convert.ToString(reader["CS_DEGREE"]);
                    }
                    if (reader["CS_PRICE"] != DBNull.Value)
                    {
                        cs_price = Convert.ToString(reader["CS_PRICE"]);
                    }
                    if (reader["CS_PRICE_INFO"] != DBNull.Value)
                    {
                        cs_price_info = Convert.ToString(reader["CS_PRICE_INFO"]);
                    }
                    if (reader["S_START_DATE"] != DBNull.Value)
                    {
                        s_start_date = Convert.ToString(reader["S_START_DATE"]);
                    }
                    if (reader["S_END_DATE"] != DBNull.Value)
                    {
                        s_end_date = Convert.ToString(reader["S_END_DATE"]);
                    }
                    if (reader["S_DURATION_EST_NUM"] != DBNull.Value)
                    {
                        s_duration_est_num = Convert.ToString(reader["S_DURATION_EST_NUM"]);
                    }

                    aktueller_course = aktueller_course.Replace("[%cs_name%]", name);
                    aktueller_course = aktueller_course.Replace("[%cs_id%]", cs_id);
                    aktueller_course = aktueller_course.Replace("[%cs_desc_short%]", desc_short);
                    aktueller_course = aktueller_course.Replace("[%cs_desc_long%]", desc_long);
                    aktueller_course = aktueller_course.Replace("[%cs_infolink%]", info_link);
                    aktueller_course = aktueller_course.Replace("[%cs_goal%]", cs_goal);
                    aktueller_course = aktueller_course.Replace("[%s_start_date%]", s_start_date);
                    aktueller_course = aktueller_course.Replace("[%s_end_date%]", s_end_date);
                    aktueller_course = aktueller_course.Replace("[%s_duration_est_num%]", s_duration_est_num);
                    aktueller_course = aktueller_course.Replace("[%cs_suppliererid%]", cs_supplierid);
                    aktueller_course = aktueller_course.Replace("[%cs_promotion%]", cs_promotion);
                    aktueller_course = aktueller_course.Replace("[%cs_promotion_desc%]", cs_promotion_desc);
                    aktueller_course = aktueller_course.Replace("[%cs_degree%]", cs_degree);
                    aktueller_course = aktueller_course.Replace("[%cs_price%]", cs_price);
                    aktueller_course = aktueller_course.Replace("[%cs_price_info%]", cs_price_info);

                    courses += aktueller_course;
                }

                reader.Close();
                verbindung.Close();

                label3.Text = "Ersetze ungültige Zeichen";
                toolSt.Text = "Ersetze ungültige Zeichen";

                //Ersetzen ungültiger Zeichen
                courses = courses.Replace("<p>", "");
                courses = courses.Replace("</p>", "");
                courses = courses.Replace("<br>", "");
                courses = courses.Replace("<br/>", "");
                courses = courses.Replace("&", "&amp;");

                //Festlegen des Abfragestrings und Übergabe der verbindung an die query für Anbieter
                query.CommandText = "SELECT * FROM Veranstalter";
                query.Connection = verbindung;

                verbindung.Open();
                reader = query.ExecuteReader();

                label3.Text = "Lese Anbieterdaten";
                toolSt.Text = "Lese Anbieterdaten";

                //Anweisung was mit dem Datensatz den er aktuell gelesen hat passieren soll für Anbieter
                while (reader.Read())
                {
                    aktueller_anbieter = suppliers_temp;

                    string css_name = null;
                    string a_name = null;
                    string a_street = null;
                    string a_city = null;
                    string a_zip = null;
                    string css_id = null;

                    if (reader["veranst_kurz"] != DBNull.Value)
                    {
                        css_name = Convert.ToString(reader["veranst_kurz"]);
                    }
                    if (reader["Strasse"] != DBNull.Value)
                    {
                        a_street = Convert.ToString(reader["Strasse"]);
                    }
                    if (reader["Ort"] != DBNull.Value)
                    {
                        a_city = Convert.ToString(reader["Ort"]);
                    }
                    if (reader["Plz"] != DBNull.Value)
                    {
                        a_zip = Convert.ToString(reader["Plz"]);
                    }
                    if (reader["UUID"] != DBNull.Value)
                    {
                        css_id= Convert.ToString(reader["UUID"]);
                    }

                    //Veranstaltername
                    if (reader["Veranstalter0"] != DBNull.Value)
                    {
                        a_name = Convert.ToString(reader["Veranstalter0"]);
                        if (reader["Veranstalter1"] != DBNull.Value)
                        {
                            a_name = a_name + " " + Convert.ToString(reader["Veranstalter1"]);
                            if (reader["Veranstalter2"] != DBNull.Value)
                            {
                                a_name = a_name + " " + Convert.ToString(reader["Veranstalter2"]);
                            }
                        }
                    }
                    aktueller_anbieter = aktueller_anbieter.Replace("[%css_name%]", css_name);
                    aktueller_anbieter = aktueller_anbieter.Replace("[%a_name%]", a_name);
                    aktueller_anbieter = aktueller_anbieter.Replace("[%a_street%]", a_street);
                    aktueller_anbieter = aktueller_anbieter.Replace("[%a_city%]", a_city);
                    aktueller_anbieter = aktueller_anbieter.Replace("[%a_zip%]", a_zip);
                    aktueller_anbieter = aktueller_anbieter.Replace("[%css_id%]", css_id);

                    suppliers += aktueller_anbieter;
                }

                reader.Close();
                verbindung.Close();

                label3.Text = "Schließe Datenbank";
                toolSt.Text = "Schließe Datenbank";

                label3.Text = "Ersetze ungültige Zeichen";
                toolSt.Text = "Ersetze ungültige Zeichen";

                //Ersetzen ungültiger Zeichen
                suppliers = suppliers.Replace("<p>", "");
                suppliers = suppliers.Replace("</p>", "");
                suppliers = suppliers.Replace("<br>", "");
                suppliers = suppliers.Replace("<br/>", "");
                suppliers = suppliers.Replace("&", "&amp;");

                //string time = System.DateTime.Now.Date.ToString("T");
                string jahr = System.DateTime.Now.Year.ToString();
                string monat = System.DateTime.Now.Month.ToString("00");
                string tag = System.DateTime.Now.Day.ToString();

                string timestamp = jahr + '-' + monat + '-' + tag + "T00:00:00";

                header = header.Replace("[%timestamp%]", timestamp);

                //Neuen Datei Writer instanzieren um in eine Datei zu schreiben
                System.IO.StreamWriter xml_file = new System.IO.StreamWriter(@"exports\" + filename.Text + ".xml", true, Encoding.BigEndianUnicode);

                label3.Text = "Schreibe Datei";
                toolSt.Text = "Schreibe Datei";
                
                xml_file.WriteLine(header);
                xml_file.WriteLine(suppliers);
                xml_file.WriteLine(courses);
                xml_file.WriteLine(footer);

                xml_file.Close();

                label3.Text = "";
                toolSt.Text = "";

                MessageBox.Show(this, "Die Datei " + filename.Text + ".xml wurde erzeugt.", "Symetrics xmlExporter", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //Application.Exit();
            }
            else
            {
                MessageBox.Show(this, "Bitte geben Sie einen gültigen Dateinamen ein!", "xmlExporter", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

Ich bin zwar noch neu auf dem Gebiet aber ein Labeltext konnte ich recht schnell verändern 🙂

Edit: Da war noch jemand am Tippen. Ich lese mir das durch