Laden...

Forenbeiträge von pringels Ingesamt 24 Beiträge

01.08.2006 - 11:13 Uhr

Hallo,
ich habe in einer Form ein Datagridview, welches gefiltert werden kann:

 
meineBindingSource.DataSource=meineDataTable;
...
meineBindingSource.Filter= "Name LIKE '%" + txtFieldName.Text +"%'";

Das funzt auch super 🙂

Nun hat die Sache aber einen Schönheitsfehler.
Ich soll es hinbekommen, das z.B. Punkte bei Abkürzungen ignoriert werden.
Kleines Beispiel:
Wenn der Nutzer ins Textfeld "Prof Dr Meier" (ohne Punkte) einträgt, soll auch "Prof. Dr. Meier" (mit Punkte) mit erscheinen.

Kann mir jemand sagen, wie ich dafür einen Filter formulieren kann.

Vielen Dank...

28.06.2006 - 12:28 Uhr

Hallo,
ich habe ein Problem mit einer Verbindung zu einer Oracle9i-Server.

Unsere Zentrale hat uns einen Rechner (Win2k) ins Büro gestellt, auf dem eine Oracle-Datenbank läuft. Diese Datenbank wird dann jede Nacht aktualisiert.
Auf dem Rechner läuft ein Programm, mit dem man sich dann die Daten anschauen kann (Bestellungen).
Die Berechtigungen auf dem Rechner sind so eingeschränkt, dass man keine anderen Programme starten kann (Explorer o.ä).
Das ist eine sehr unbefriedigende Situation und ich als Feierabend-Progger wollte mich mal der Sache annehmen.
Ich habe mir ein Analyse-Tool besorgt (Keeptool7). Bei diesem Tool gebe ich IP, DB-Name und User+Passwd an und es stellt eine Verbindung zu dieser DB her, d.h. ich kann mir die Tabellen und Inhalte anschauen.
Nun machte ich mich an die Programmierung (mit C#) und bekomme aber keine Verbindung hin.
Ich habe folgendes versucht:


System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString="Provider=OraOLEDB.Oracle;" +
"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.101)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=Best)));"+
"User ID=dbuser;" +
"Password=dbpasswd;";
conn.Open();

Ich bekomme eine OleDbException->"ORA-12514: TNS:listener does not currently know of service requested in connect descriptor"

Wie bekomme ich die Connection (anders) hin???
Denn eine Connection muss ja möglich sein, da sonst auch das Db-Tool auf meinem Rechner sich nicht verbinden könnte.

Vielen Dank...

27.06.2006 - 17:54 Uhr

Hallo,
ich habe mal eine Frage zum Databinding an einer Checkbox.
Von einer Eigenschaft eines Objekt bekomme ich ein bool und binde diesen an die Checkbox, also so

meineCheckbox.DataBindings.Add("checked", meinObjekt, "BoolEigenschaft");

Das klappt super, nur brauche ich das ganze umgedreht 😉
D.h Wenn meinObjekt.BoolEigenschaft==true, dann soll meineCheckbox.Checked=false

Geht das irgendwie direkt über Databinding zu machen???
Eine "Umgehung" habe ich selbst schon gebaut 😁
Danke für Tipps...
pringels

23.06.2006 - 16:24 Uhr

Danke...
manchaml kann das Leben sooooooooooooooooo grausam sein.

23.06.2006 - 16:12 Uhr

Hi,

ich sitze gerade an der SQL-Abfrage an eine Access-Db. Die Tabelle hat eine Datumsspalte und ich möchte die Einträge eines Monats zählen.
Wenn ich in Access die Abfrage

SELECT COUNT(id) AS anz FROM tabelle WHERE DatePart("yyyy",[datum])=2006 AND DatePart("m",[datum])=6

losschicke gehts super.
In C# bekomme ich eine OleDbException-->{"Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben."}
Es liegt wahrscheinlich an der DatePart-Funktion aber wie sieht die "Übersetzung" für OleDB aus???

Danke für Vorschläge
pringels

22.06.2006 - 13:34 Uhr

Ich meinte damit, wenn MDI-Parent kleiner als die Min-Size des MDI-Childs wird...

22.06.2006 - 12:19 Uhr

jetzt habe ich eine andere Ursache gefunden.
Das MDI-Child enthält ein Tab-Controll mit DockStyle.Fill.
Wenn ich den DockStyle.None nehme, funktioniert alles super.
Aber das TabControl soll sich mit der Form vergrößern und verkleinern bis auf die MinimumSize.
Wenn die MinSize unterschritten wird, sind ja Teile des TabControls nicht mehr sichtbar und AutoScroll müsste greifen???

22.06.2006 - 11:40 Uhr

ich habe Form.MinimumSize auf 500x400 gesetzt und nicht AutoScrollMinSize.

22.06.2006 - 10:49 Uhr

AutoScroll sollte auch bei maximierem Fenster funktionieren

das ist schon mal gut zu hören.
Also liegts wahrscheinlich an meinen Einstellungen.
Ich habe für mein Mdi-Child eine Mindestgröße von 500x400.
Im MDI-Parent mache ich


            FormMdiChild f = new FormMdiChild();
            f.AutoScroll = true;
            f.MdiParent = this;
            f.Dock = DockStyle.Fill;
            // f.WindowState = FormWindowState.Maximized;
            f.Show();

und die Scrollbars sind da (wenn ich mit dem MDI-Parent unter 500x400 komme).
Auch

f.Size = new Size(1000, 700);

bringt Scrollbars hervor.

Wenn ich aber

f.WindowState = FormWindowState.Maximized

mache oder auf den Maximieren-Button ( [] ) drücke, sind die Scrollbars weg.
An welchen Einstellungen könnte es denn noch hängen?

22.06.2006 - 09:40 Uhr

Hallo Welt,

ich habe eine MDI-App. Bei den Childs habe ich die Eigenschaft Autoscroll auf true gesetzt.
Das funktoniert aber nur so lang, wie WindowState nicht maximiert ist.
Wenn ich den Child maximiere, sind die scrollbars weg, obwohl ich sie noch brauche, da nicht alle Steuerelemente zu sehen sind.
Wie bekomme ich Autoscroll bei maximiertem MDI-Child hin???

Vielen Dank schon mal im voraus.
pringels

15.06.2006 - 17:10 Uhr

Hallo,
ich glaube Crystal-Report-Fragen sind hier nicht so beliebt, aber <schleim>in anderen Foren ist leider nicht so viel Intelligenz wie hier</schleim>.

In einem CR habe ich als Daten Kontaktinfos (z.B. Name, Telefon usw). Jeder Kontakt ist einer Kategorie zugeordnet (Privat,Geschäftlich, Mitarbeiter). Nun gruppiere ich nach dieser Kategorie.
Das klappt auch super...
Nur hätte ich es gern, dass wenn meine Liste beispielsweise nur Mitarbeiter enthält auch die Gruppenköpfe für die Kategorien Privat und Geschäftlich angezeigt werden und die Gruppen dann entsprechend leer sind.
Geht das irgendwie?
Vielen Dank...

07.06.2006 - 21:36 Uhr

Tach,
ich hoffe, dass hier auch Fragen zu CrystalReport beantwortet werden.
Wenn nicht, bitte nicht motzen (sondern einen Link zu einem passendem Forum) =)

Nun aber mal los...
Ich habe ein kleines Programm geschrieben, welches eine Datei einliest, in der eine Reihe von Zahlen stehen.
Die erste Zahl gibt einen Codierungstyp an, auf welche Art der Rest der Zahlen in Strings umgewandelt werden muss.
Weitere Details würden hier nur zu unnötiger Verwirrung führen.
Kurz: Ich habe eine Klasse MeineKlasse, die als Eigenschaften einen string Codierungstyp und eine List<string> Codes hat.

Nun möchte ich das Ganze in einem Bericht darstellen und habe mich an CrystalReports getraut. Und komme prompt nicht weiter.
Wie kann ich dem Bericht mein ganzes Objekt von MeineKlasse übergeben?
Wenn ich

CrystalReport1.SetDataSource(objektMeinerKlasse.Codes);

mache, zeigt er mir zwar die Liste ordentlich an, aber den Codierungstyp habe ich dann nicht.
Und wenn ich über den Assistenten den Bericht erstelle, bietet er mir nur den Codierungstyp, nicht aber das Array.

Hat jemand einen Tipp, wie ich das zusammen bekomme?
Oder (freie) Alternativen zu CR oder ein gutes Howto?

06.06.2006 - 12:22 Uhr

Hi,
ich habe ein etwas nerviges Prolem. In meinem DataGridview habe ich mehrere Spalten.
Die Spalten habe ich über die Pfeil-Hoch/Runter-Buttons sortiert (wenn man im auf "Spalten bearbeiten" klickt).
Wenn ich jetzt wieder auf "Spalten bearbeiten" klicke, ist die Spaltenreihenfolge wieder im A... und ich muss neu sortieren.
Wie schaffe ich es, dass sich VS2005 die Reihenfolge der Spalten merkt bzw nach welcher Reihenfolgen werden die Spalten automatisch angeordnet?
Es ist kein furchtbares Problem, aber SEHR nervig 😜
Danke
Pringels

03.06.2006 - 13:57 Uhr

An das sperren (lock?) habe ich auch schon gedacht.
Hatte gehofft, das es eine Eigenschaft, z.B. des FileInfo-Objects gibt, über die ich das herausfinden kann.

@blackcoin:
replace nützt mir in diesem Fall wirklich nichts...

02.06.2006 - 23:34 Uhr

Hallo,
ich habe folgendes Problem:
in meiner Mdi-Anwendung kann ich eine Datei öffnen und mache dann ein neues Child-Fenster auf. Damit eine Datei nicht zweimal gleichzeitig geöffnet wird, habe ich ein

Dictionary<string dateiname, Form meinMdiChild>

. Wenn de r Dateiname (incl. Pfad) als Key schon drin steht, wird kein neues Fenster geöffnet, sondern das vorhandene aktiviert.
Läuft super.
Nun habe ich mich aber selbst ausgetrickst. Da der Ordner, indem meine zu öffnenden Dateien liegen so einen langen Pfad hat, habe ich mir eine Abkürzung gebaut. In einer Batch-Datei lege ich ein virtuelles Laufwerk V: an. Also:

subst V: C:\langer\Pfad\zu\meiner\Datei

Nun kann ich die gleiche Datei doch zweimal öffnen, nämlich über

  1. V:\meine_dat.ei
  2. C:\langer\Pfad\zu\meiner\Datei\meine_dat.ei
    Beides ist aber die gleiche Datei.
    Wie kann ich feststellen, ob es die gleichen Dateien sind?
    Oder anders gefragt, was kann ich anstelle des Dateinamens als key für mein Dictionary verwenden?
    Danke
    pringels
31.05.2006 - 15:04 Uhr

Hallo,
als Feierabend-Programmierer habe ich mal wieder eine allgemeine Frage zur Datenhaltung.
Ich habe derzeit eine Reihe von Klassen, die derzeit aber nur ein paar Dummydaten enthalten.
Nun wollte ich das ganze mit ner DB verbinden. Nur weiß ich nicht recht, wie da ein guter Ansatz aussieht.
Ich dachte mir ich erstelle für eine Klasse ein (Typed)Dataset. Die dazugehörtige Datatable fülle ich und die Instanz einer Klasse greift dann entsprechend auf die DataRow zu.
Nur scheint mir der Ansatz etwas "dick" zu sein. Wäre für allgemeine Tipps, Links und Konkretes dankbar X(

30.05.2006 - 16:02 Uhr

Hi Ihr Schlauen dieser Welt,
in meinem Programm habe ich 2 Klassen, Person und Adresse. Ein Objekt Person enthält ein Objekt Adresse, welches auch als Property exitiert, also so:


class Person
{
   private Adresse adr;
   ....
   public Adresse DieAdresse
   {
       get { return adr;}
   }

Ich habe nun folgendes Problem:
In einem Datagridview möchte ich eine Liste der Personen anzeigen.
Dazu habe ich im VS2005 das Steuerelement auf die Form gezogen. Dann mit dem Wizard eine Datenquelle von meiner Klasse Person erstellt.
Nun hat das Datagridview auch alle Spalten, z.B. Name. Super...
Es hat aber auch eine Spalte Adresse, da es ja eine public-Property Adresse gibt.
In der Spalte steht natürlich nichts drin (was auch???). Nun möchte ich das in diesem Feld eine Eigenschaft von Adresse angezeigt wird z.B. Ort oder Strasse.
Wenn ich im Eigenschaftsfenster der Spalte bei DataPropertyName statt Adresse nun Adresse.Ort eingebe passiert nichts.
Kann ich die Spalte direkt einer Property von Adresse von Person zuweisen (schräge Formulierung)???
Wenn das nicht geht muss ich wohl in Person noch Dummy-properties anlegen, die die Properties von Adresse "spiegeln".

25.05.2006 - 11:36 Uhr

Hi,
danke erstmal für die vielen Antworten.
Der konkrete Anwendungsfall ist so: Ich hab ne MDI-Programm, mit dem ich Dateien öffnen kann. Für jede Datei geht ein neues MDI-Child auf. Damit eine Datei nicht ein zweites mal geöffnet wird habe ich ein Dictionary, in dem alle Forms als Value mit dem Dateiname als Key stehen:


private Dictionary<string, MeineForm> _openFileTable;
...
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.InitialDirectory = Environment.CurrentDirectory;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                if(_openFileTable.ContainsKey(ofd.FileName))
                {
                    this.ActivateMdiChild(_openFileTable[ofd.FileName]);
                }
                else
                {
                        MeineForm f = new MeineForm();
                        f.MdiParent = this;
                        f.WindowState = FormWindowState.Maximized;
                        _openFileTable.Add(ofd.FileName,f);
                        f.Show();
                }
            }

Wenn ich nun ein MDI-Child schliesse, muss es ja aus dem Dictionary wieder entfernt werden. Das wollte ich eben nicht im FormClose des Childs machen, sondern im Parent. Im Parent scheint mir nur das MdiChildActivate brauchbar zu sein.
Für andere Lösungsvorschläge bin ich dankbar...

24.05.2006 - 23:18 Uhr

Hallo,
bei einem MDI-Parent tritt das Event MdiChildActivate beim Aktivieren oder Schliessen des MDI-Childs auf.
Kann ich auf einfache Weise unterscheiden, ob das Event durch's aktivieren oder durch's schliesen ausgelöst wird?
Danke für Tipps...

18.05.2006 - 17:03 Uhr

Perfekt 👍

Genau danach habe ich gesucht...

18.05.2006 - 16:22 Uhr

Einen schönen Nachmittag euch allen.
Hab mal eine Frage bezüglich der Geschwindigkeit meines Codes
Ich habe eine MDI-Anwendung mit der ich eine Datei öffnen kann. für jede Datei wird ein MDI-Child geöffnet.
Wenn eine Datei nun ein 2. mal gewählt wird, soll kein neues Fenster geöffnet werden, sondern das MDI-Child aktiviert werden, in dem die Datei das erste mal geöffnet wurde.
Ich habe in den Childs eine Eigenschaft definiert, die den Datei enthält. Beim Öffnen einer Datei durchlaufe ich nun alle Childs und prüfe, ob die Datei schon mal geöffnet wurde. Wenn ja, aktiviere ich das betreffende Child-Fenster, wenn nicht, dann mache ich ein neues auf. Etwa so:


OpenFileDialog ofd = new OpenFileDialog();
ofd.InitialDirectory = Environment.CurrentDirectory;
if (ofd.ShowDialog() == DialogResult.OK)
{
      bool found=false;
      foreach (Form f in this.MdiChildren)
      {
             if (f.GetType().Equals(typeof(MeinMdiChild)))
             {
                        MeinMdiChild f2 = f as MeinMdiChild;
                        if (f2.Filename.Equals(ofd.FileName))
                        {
                            found = true;
                            this.ActivateMdiChild(f);
                        }
              }
     }

     if (!found)
     {
          MeinMdiChild f = new MeinMdiChild(ofd.FileName);
          f.MdiParent = this;
          f.Show();
     }
}

Nun scheint mir dieses Vorgehen nicht besonders effizient zu sein.
Gibt es, abgesehen von dem Austieg aus der For-Schleife, wenn es gefunden wurde, noch andere Lösungsmöglichkeiten?
Danke....

12.05.2006 - 19:56 Uhr

Habe es jetzt auf folgende Weise gelöst.
Ich habe eine ungebundene Spalte im Datagridview angelegt und bei Cell_formating das:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
       if (e.ColumnIndex == 3)
      {
              if (contactBindingSource[e.RowIndex].GetType().Equals(typeof(Person)))
              {
                    Person p = contactBindingSource[e.RowIndex] as Person;
                    if (p != null)
                    {
                        e.Value = p.Firstname;
                    }
              }
       }           
}
12.05.2006 - 16:14 Uhr

Hi,
ich wollte eigentlich die direkte Datenbindung vermeiden. Weil langfristig soll die Access-DB durch was anderes ersetzt werden (event. XML) und dann müsste ich in allen Forms usw ändern.
Ich würde schon gern mit meinen Buissness-Objects arbeiten...
Trotzdem danke für die Antwort.

12.05.2006 - 14:04 Uhr

Hallo Leute,
ich hoffe ich bin hier im richtigen Forum, da ich noch ein programmier-newbie bin und auch ein paar allgemeine Fragen habe.
Ich möchte gern (oder eher muss) ein kleines Programm zur Kontaktverwaltung schreiben. Die Daten stehen in einer Access-Db.
Nun habe ich 2 Buissnes-Klassen gebaut: Person und Firma. Beide erben von der abstrakten Klasse Kontakt (z.B. Name). Die erbenden Klassen haben selbst aber aucch noch eigene Eigenschaften, z.B Vorname bei Person.
Nun möchte ich die Objekte beider Klassen in einem Datagridview anzeigen.
Bei einer Klasse wäre kein Problem. Da kann ich ja im VS2005 eine Bindingsource einstellen und dann die Spalten auswählen, die ich anzeigen will.
In meinem Fall eben Name und Vorname bei Personen.
Nun möchte ich aber Personen und Firmen zusammen anzeigen. Bei Personen den Name und Vorname, bei Firmen Name und eine leere Spalte (da Firmen keinen Vornamen haben).
Jemand eine Idee, wie ich das anstelle.
Danke schonmal...