Laden...

Forenbeiträge von UnoDosTres Ingesamt 27 Beiträge

09.10.2007 - 23:28 Uhr

Hallo,

ja da habt ihr absolut recht. Mir fehlen halt noch die Grundlagen. Bin seit 3 oder 4 Tagen dabei C# zu lernen. Vielen Dank für die vielen Infos.

Gruss
UnoDosTres

09.10.2007 - 21:08 Uhr

Hallo,

habe eine Klasse die z.B. so ausschaut:


using System;
using System.Collections.Generic;
using System.Text;

namespace domination
{
    class dbwork
    {
        string datei = Application.StartupPath + "\\domains.mdb";
    
    }
}

  1. Wie kann ich auf das Objekt datei zugreifen? Das Programm kennt den String nicht. Obwol die Klasse dem Projekt zugeordnet ist.

  2. Er sagt mir immer ein Fehler bei Application... das erkennt er nicht sobald diese Anweisung in der Klasse ist. In der Hautform geht es.

09.10.2007 - 12:04 Uhr

Hallo juetho,

hatte Deinen Betrag zu spät gesehen.

09.10.2007 - 12:02 Uhr

OK. das ist mir noch ne Nummer zu hoch. Ich will erst mal klein Anfangen.
Habe mir gedacht die Anweisungen in die Public Form1() zu schreiben:


InitializeComponent();
            string datei = Application.StartupPath + "\\domains.mdb";
            string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + datei + ";";
            OleDbConnection conn;
            OleDbCommand command = new OleDbCommand();
            OleDbDataAdapter adapter = new OleDbDataAdapter();




            // Verbindung erstelen und Öffnen          
            conn = new OleDbConnection(conString);
            command = conn.CreateCommand();

            // DataSet erstellen
            DataSet ds = new DataSet();

Nur dann erkennt er im Click-Ereignis die Sachen wie command, conn, ds etc. nicht mehr. Warum?

09.10.2007 - 11:33 Uhr

Also mal zum Verständnis:

Ich müsste also den ganzen Code (der Am Anfang des Threads steht) komplett in eine Klasse packen?

Dann müsste ich eine zweite Klasse erstellen die wieder den Kompletten Code nur mit geänderte SQL-Anweisung enthält?

Dann wohlmöglich eine dritte und vierte Klasse mit jeweils geänderten SQL-Anweisungen?

Das finde ich ehrlich gesagt unlogisch. Was ist denn wenn ich auf einmal eine andere DB nutzen möchte? Dann muss ich es ja an vielen Stellen ändern. !?

09.10.2007 - 11:14 Uhr

Irgendwie versteh ich nur Bahnhof.
Ich habe jetzt eine Klasse:


public class DBconn
{
    public DBconn()
    {
        string datei = Application.StartupPath + "\\domains.mdb";
        string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + datei + ";";
        OleDbConnection conn;
        OleDbCommand command = new OleDbCommand();
        OleDbDataAdapter adapter = new OleDbDataAdapter();

        // Verbindung erstellen und Öffnen          
        conn = new OleDbConnection(conString);
        command = conn.CreateCommand();

        // DataSet erstellen
        DataSet ds = new DataSet();

    

        ds = new DataSet();
    }

    
}
public class DBlesen
{
    public DBlesen()
    {
        conn.Open();

        // SQL Query ausführen
        command.CommandText = "SELECT * FROM dom ORDER BY ID";
        adapter = new OleDbDataAdapter(command);
        adapter.Fill(ds);

        // Verbindung schliessen
        conn.Close();
    }
}

DBconn ist für die Verbindung
DBlesen für das Lesen zuständig

So richtig?

Aber im Form-Load ereignis muss ich die Sachen ja auch irgendwie verarbeiten:


            DBconn;
            DBlesen;
            grid1.DataSource = ds.Tables[0];

ist mit Sicherheit falsch. Denn er kennt DBconn und DBlesen nicht.
zudem bekomme ich so auch Probleme mit dem grid. Weil er ds nicht kennt.

09.10.2007 - 10:51 Uhr

Hm...
dann habe ich micht wohl falsch ausgedrückt. Dann müsste ich ja für jede SQL-Anweisung eine eigene Klasse haben, oder bin ich jetzt total auf dem Holzweg?

Ich hatte mir es so gedacht den ganzen DB-Kram auszulagern und im jeweiligen Klick-Ereignis nur die Verbindung zur DB zu öffnen, SQL-Anweisung absenden, Verbindung wieder schliessen.

09.10.2007 - 10:31 Uhr

Das habe ich gemacht.
Aber innerhalb des Klick-Ereignisses rufe ich ja z.B.


command.CommandText = "SELECT * FROM dom ORDER BY ID";

auf. Und dort schmeisst er mir dann die Fehlermeldung raus.

09.10.2007 - 10:04 Uhr

Vielen Dank für die Infos.

Ich habe jetzt eine Classe erstellt und den Datenbank-Krams dort reingelegt.
Wenn ich das Programm starten will kommen aber etliche Fehlermeldung:

Fehler 2 Der Name "command" ist im aktuellen Kontext nicht vorhanden.

Der gleiche Fehler mit Adapter etc.

Muss ich noch etwas in der using-Klausel definieren das er die Klasse kennt?
Im Projektmappen-Explorer wird die Klasse angezeigt.

09.10.2007 - 09:48 Uhr

Hallo,

ich bin dabei zum lernen ein kleines Datenbank-Programm zu schreiben. Hierbei wird zu Anfang eine vorhandenen ACCESS DB ausgelesen und in ein Grid geladen.

Dieser Code steht im Form-Load Ereignis:


string datei = Application.StartupPath + "\\domains.mdb";
            string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + datei + ";";
            OleDbConnection conn;
            OleDbCommand command = new OleDbCommand();
            OleDbDataAdapter adapter = new OleDbDataAdapter();



            // Verbindung erstellen und Öffnen          
            conn = new OleDbConnection(conString);
            command = conn.CreateCommand();

            // DataSet erstellen
            DataSet ds = new DataSet();

            //DataSet clearen
            grid1.DataSource = null;

            ds = new DataSet();

            conn.Open();
            command.CommandText = "SELECT * FROM dom ORDER BY ID";
            adapter = new OleDbDataAdapter(command);
            adapter.Fill(ds);
            // Konnektierung schliessen
            conn.Close();
            grid1.DataSource = ds.Tables[0]; 

In einem Button.Click möchte ich Daten in die DB schreiben. Meine Frage dazu ist jetzt: Muss ich im Click-Ereignis diese ganzen Datenbankconnection, DataSet etc. komplett mit reinschreiben? Wäre meines erachtens doch irgendwie unlogisch.
Ich möchte diese ganzen Sachen irgendwie "auslagern" und in den eigendlichen Ereignisen dann nur das DB-Command reinschreiben.

Wie mache ich das?
Sorry für die vieleicht blöde Frage aber bin absoluter C# Neuling und hab das ganze noch nicht wirklich durchdrungen.

Danke und Gruss

08.10.2007 - 14:27 Uhr

OK. Ich habe es jetzt hinbekommen. schwitz
Irgendwie war der ganze Code den ich da fabriziert hatte wohl total für den A****
🙂

Habe es jetzt so gelöst:


string datei = Application.StartupPath + "\\domains.mdb";
            string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + datei + ";";
            OleDbConnection conn;
            OleDbCommand command = new OleDbCommand();
            OleDbDataAdapter adapter = new OleDbDataAdapter();



            // Verbindung ersteelen und Öffnen          
            conn = new OleDbConnection(conString);
            command = conn.CreateCommand();

            // DataSet erstellen
            DataSet ds = new DataSet();

            //DataSet clearen
            grid1.DataSource = null;

            ds = new DataSet();

            conn.Open();
            command.CommandText = "SELECT * FROM dom ORDER BY ID";
            adapter = new OleDbDataAdapter(command);
            adapter.Fill(ds);
            // close the connection
            conn.Close();
            grid1.DataSource = ds.Tables[0];

08.10.2007 - 14:19 Uhr

in der Tabelle ist ein (Test)Datensatz vorhanden.

08.10.2007 - 14:05 Uhr

Bin immer noch bei Null.


private void Form1_Load(object sender, EventArgs e)      
        {
            string datei = Application.StartupPath + "\\domains.mdb";

            InitializeComponent();

            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + datei + ";");
          
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM dom ORDER BY ID", conn);
            conn.Open();
            da = new OleDbDataAdapter(cmd);

            OleDbCommandBuilder cb = new OleDbCommandBuilder(da);

       
            ds = new DataSet();

            
            
           
            da.Fill(ds, "dom");
            
            
            grid1.DataSource = ds.Tables[0];
            conn.Close();
            //MessageBox.Show(conn.DataSource.ToString());          


        }

Langsamm verzweifel ich. Ist das wenigstens ansatzweise richtig was ich hier mache?

08.10.2007 - 13:23 Uhr

Das DataSet hat nur eine Eigenschaft die "TABLES" heisst. Meinst du das?
Das jedenfalls klappt auch nicht.
?(

08.10.2007 - 10:22 Uhr

Hallo,

leider bin ich nicht weitergekommen.
Habe mir via


 MessageBox.Show(conn.DataSource.ToString());

Den Pfad der DB ausgeben lassen und dieser ist Korrekt.
Also muss es ja an dem Grid liegen (?) Muss ich da noch irgend etwas bestimmtes Einstellen?

08.10.2007 - 00:18 Uhr

Leider besteht das Problem immernoch, Das Grid bleibt einfach Leer. Kann mir evtl jemand einen Tipp geben? Ich weiss nicht wo der Fehler liegen könnte.

07.10.2007 - 20:26 Uhr

Hi,

das klappt leider auch nicht. Das Grid bleibt einfach leer, auch die Tabellennamen werden nicht angezeigt.

Hier mal der komplette Code:


string datei = Application.StartupPath + "\\domains.mdb";

            InitializeComponent();

            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + datei + ";"); 
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM dom ORDER BY ID", conn);

            da = new OleDbDataAdapter(cmd);

            OleDbCommandBuilder cb = new OleDbCommandBuilder(da);

            /*ds = new DataSet();

            da.Fill(ds, "dom");

            grid1.DataSource = ds;

            grid1.DataMember = "dom";*/
            ds = new DataSet();

            conn.Open();
            da.Fill(ds, "dom");
            conn.Close();
            grid1.DataSource = ds; 
07.10.2007 - 20:13 Uhr

Supi, die Fehlermedlung kommt nicht mehr. Allerdings wird der Inhalt der Datenbank auch nicht angezeigt. Das Grid bleibt einfach leer.

07.10.2007 - 19:59 Uhr

Hallo,

ich werde die DB jetzt per Hand einbinden. Allerdings habe ich ein Problem mit dem relativen Pfad:

 string datei = Application.StartupPath + "\\domains.mdb";

            InitializeComponent();

            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=datei;");
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM dom ORDER BY ID", conn);

            da = new OleDbDataAdapter(cmd);

            OleDbCommandBuilder cb = new OleDbCommandBuilder(da);

            ds = new DataSet();

            da.Fill(ds, "dom");

            grid1.DataSource = ds;

            grid1.DataMember = "dom";

Wenn ich das Programm ausführe stürzt es ab und er sagt "datei nicht gefunden"
Wie binde ich den String "Datei" korrekt ein?

05.10.2007 - 18:39 Uhr

Hallo,

weiss jemand wo man Office 2007 Controls erhalten kann?

05.10.2007 - 17:42 Uhr

Hm...ja ich denke ich werde das ganze manuel versuchen.

Trotzdem schon komisch das es diese Funktion gibt und man damit solche Probleme bekommt. 🤔

04.10.2007 - 22:53 Uhr

Danke für die Ausfürliche Hilfe,

leider ist es genau das was ich eigendlich nicht möchte. Ich möchte gerne den Aisstenten benutzen - Das ist ja der "casus knacktus"
Nur ich finde nichts an Beispielen die mir aufzeigen wie ich dann weiter vorgehen muss. Keine Ahnung vieleicht suche ich ja an der falschen Stelle, oder nach den Falschen Stichworten, aber weger google noch die Hilfe hat mich weitergebracht.

04.10.2007 - 21:30 Uhr

Leider hilft mir das nur sehr bedingt weiter. (jedenfalls bei diesem konkreten Problem)

Ich habe auch im Internet einiges gefunden, jedoch bezieht sich das immer auf das Scenario wenn man die Datenbank noch gar nicht verbunden hat.
Es wird dann ein neues DataSet erzeugt etc...

Ich habe die Datenbank aber über den Assisten eingebunden. Das ListView zeigt diese ja auch korrekt an.

Habe in der Hilfe folgendes Gefunden:


try
{
    this.Validate();
    this.customersBindingSource.EndEdit();
    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    MessageBox.Show("Update successful");
}
catch (System.Exception ex)
{
    MessageBox.Show("Update failed");
}


Was ist nicht verstehe ist, wo gebe ich die Daten an die gespeichert werden sollen?
Ich muss doch irgenwie/irgendwo einen INSERT o.ä. machen und ihm dann sagen welche Daten er wohin schreiben soll. ?(

04.10.2007 - 17:03 Uhr

Danke,

werde mir das mal durchlesen.

Gruss

UnoDosTres

04.10.2007 - 17:00 Uhr

Ja genau, ich will ein C# Programm inerhalb einer Webseite darstellen.
Hm..Silverlight kennt ich, aber leider ist mir das noch zu Beta.

Mich würde brenned Interessieren wie Adobe das macht?

Kann ich ein fertiges C# Programm später irgendwie als ActiveX "umwandeln" oder muss ich dieses von vorne herein als solches entwickeln?

04.10.2007 - 10:09 Uhr

Hallo,

PDF-Files kennt ja jeder.
In eine HTML-Seite kann ich eine PDF-Datei einbetten, dann erscheint ein "kleiner" Adobe-Reader inerhalb des HTML-Dokuments. (Setzt natürlich einen installierten Adobe Reader voraus)

Meine Frage ist nun. Kann ich ein ganz normales C# - Programm (kein ASP.NET sondern WinForms) auch so in eine HTML-Seite einbetten? (von mir aus auch nur IE)

01.10.2007 - 21:48 Uhr

verwendetes Datenbanksystem: <ACCESS>

Hallo,

bin absoluter C# Anfänger. Zum üben habe ich mir vorgenommen ein kleines Projekt zu schreiben in dem ich Domains und die Zugänge verwalten kann.

Habe mir mit Access eine leere DB angelegt. Auf der Form haben ich ein DBListeView welches ich auch erfolgreich mit der vorhandenen Access-DB verbunden habe.
Auf der Form habe ich etliche Textfelder, ich möchte die Werte der Felder in die DB schreiben. Wie gehe ich jetzt vor?
Welche Komponente etc. muss ich nutzen?

Danke und Gruss
UnoDosTres