Datenbank durchsuchen

Hanseatic

Grünschnabel
Hallo,

Ich bin vor kurzem von VBA auf Visual Studio 2008 umgestiegen. Nun habe ich folgendes Problem. Ich habe eine MDB Datei implementiert und mehrere Forms die jeweils eine Tabelle daraus darstellen (DataGridView). Nun moechte ich eine Suchfunktion aufbauen die es erlaubt nach Eingabe des Wortes die GESAMTE Datenbank zu durchsuchen und die gefundenen Stellen herausgibt.

Suche nun schon seit Tagen.


:(

Danke!

Michael
 
Ich denke mal du hast alles in DataSet geladen oder?
Wenn ja kannst bei DataTable die Funktion Select aufrufen und dort als Parameter einen String ähnlich wie SQL übergeben.

z.B.: (kein getesteter Code)
PHP:
DataRow[] erg;
string suche="Müller";
for(int i=0; i<ds.Tables.Count; i++)
{
  erg=ds.Tables[i].Select("nachname='"+suche+"'");
  if(erg.GetLength(0) > 0)
      Anzeigen(erg);
}
ds=dein DataSet

Falls nicht DataSet, bräuchte ich mehr Infos, wie du die Daten hälst (dein Objektmodell).

Oder du durchläufst selber die DataGrids und durchsuchst direkt den Zellenwert
PHP:
string suche="Müller";
for(int r=0;r<grid.Rows.Count;r++)
{
   for(int c=0; c<grid.ColumnCount;c++)
   {
         if(grid.Rows[r].Cells[ c].Value is String)
         {
              if(string.Compare((string)grid.Rows[r].Cells[ c].Value,suche,true)==0)
                   MacheIrgendwas();
         }
   }
}
}

Vielleicht hilfts ja.
 
Zuletzt bearbeitet:
Mmh..

nun ich habe als Datasource die MDB Datei eingebunden.
Dann ein GridView erstellt und als Datanquelle jeweils ein Tabellenblatt ausgewaehlt, dass heisst hab nun mehrere gridviews...
 
Also bei beiden varianten meckert er gleich rum das sowohl string als auch datarow ein type ist und nicht als ausdruck verwendet werden kann :(
 
nun fangen wir doch anders an :)

Ich habe derzeit in Excel VBA auf basis eines simplen excel sheets eine kleine datenbank programmiert.

Genau das moechte ich nun in VS 2008 tun. Ich brauche einfach eine Tabelle in der ich suchen und sortieren sowie filtern kann.

Was waere hier die einfachste Loesung?
 
Reden wir von DB Tabelle, da würden sich ja SELECT Anweisungen gut eignen.
Oder mehr Tabelle als DataGrid?

Wenn du die Daten einliest kannst du sie zum Beispiel in eine List<T> (namespace System.Collections.Generic) reinladen und dann direkt über die Find Methoden ein delegate zum suchen anlegen.

so ungefähr:
PHP:
internal class MeineFOrm:Form
{
      MeineFOrm()
      {
      }

      //Sucht nach Namen in Liste
      public List<MeineKlasse> Suche(string name)
      {
            Predicate<MeineKlasse> findName = delegate(MeineKlasse mk) //anonymes Delegate
            {
                 return (string.Compare(name,mk.Name,true)==0);
            }
            return list.FindAll(findName);
      }

      List<MeineKlasse> list=new List<MeineKlasse>();
}


internal class MeineKlasse
{
   public string Name;
}

die Liste selber könntest du dann wieder als DataSource übergeben.

Aber ich glaube die einfachste Methode erstmal wäre weiter oben der Post wo ich die einzelnen Zellen im DataGrid durchlaufe.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück