Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Suche in zwei oder drei Datenfeldern

Begonnen von ha-be, Juni 14, 2017, 11:45:29

⏪ vorheriges - nächstes ⏩

ha-be

Hallo,

ich habe eine Access-Datenbank in der ich unsere Firmen-IT-Hardware verwalte.
Ich habe nun unter Mühen ;D (da Access-Anfänger) ein Formular gebastelt, mit einem Suchfeld,
in dem ich eine Kataster-Nr. eingebe und mir die passende Hardware angezeigt.

Wie muss ich das Script (siehe unten) verändern, dass mein Suchbegriff nicht nur im Feld KatasterNr
sondern auch in den Feldern KatasterNr2 und KatasterNr3 gesucht wird...?

Vielen Dank im Voraus für jegliche Hilfe...
ha-be


Private Sub hardwaresuchen_Click()
Dim sSQL As String
sSQL = "SELECT * FROM [tab_hardware_basis] "
sSQL = sSQL & " WHERE [KatasterNr] LIKE '*" & sHardware & "*'"
Me.RecordSource = sSQL
Me.Requery
End Sub

el_gomero

Moin,

Bezeichner wie KatasterNr2, KatasterNr3, ... deuten auf ein falsches Datenmodell. Bei richtigem brauchst du nicht über mehrere Felder zu suchen. Poste mal ein Bild des Beziehungsfensters.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

ha-be

Hallo,

erst einmal vielen Dank für die schnelle Antwort.
Äh...Beziehungsfenster...da bin ich als Anfänger wahrscheinlich erst einmal überfordert  :-[

Ich kann's aber so erklären. Die Datenbank besteht aus einer Tabelle. Dort ist die gesamte Hardware eingetragen.
Die KatasterNr ist eine eindeutige Nummer...z.B. bei einem Rechner R881 oder R156 etc.
Bei einem Scanner etwa S089 oder S100...

In meinem Suchformular gebe ich dann S089 ein und der Datensatz des Scanners wird mir angezeigt.

Nun gibt es aber Hardware die z.B. aus zwei Komponenten besteht. Etwa ein Rechner...der heißt z.B. R211 und hat noch einen Monitor M212.

Ich möchte nun im Suchfeld auch einen Suchbegriff eingeben können der nicht unbedingt im Feld KatasterNr steht sondern vielleicht in KatasterNr2 oder KatasterNr3...da ich nicht immer weiß ob die Hardware eigenständig ist
(also etwa ein separat angeschaffter Monitor...würde dann in KatasterNr stehen)...oder zu einem anderen Hardwareteil gehört (also etwa Monitor zum Rechner)...

Ich hoffe ich konnte das einigermaßen verständlich rüberbringen.

Danke...
ha-be


DF6GL

#3
Hallo,

unabhängig vom falschen Datenmodell, das als aller Erstes  bereinigt gehört, könnte Folgendes zum Erfolg führen:

<edit>
sSQL = sSQL & " WHERE [KatasterNr] & '|'  & [KatasterNr2] & '|'  &  [KatasterNr3] LIKE '*" & sHardware & "*'"
</edit>


Welchen Datentyp haben die Tabellenfelder "KatasterNr..." ?
Was ist "sHardware" ?



PS:  schau Dir mal u.st. Links 1 und 1a an.. Du musst Dich unbedingt mit den Grundlagen der Datenbanksystematik   (Tabellenaufbau, Normalisierung, Datentypen, usw..)  beschäftigen.

ha-be

Hallo...

werde ich gleich einmal ausprobieren.

Ja...mit der Zeit werde ich die Datenbank umstrukturieren.
Aber als Anfänger muss ich da erst einmal langsam reinkommen...das wird schon  ;D

el_gomero

Hallo ha-be,

Zitat
Ja...mit der Zeit werde ich die Datenbank umstrukturieren.
Aber als Anfänger muss ich da erst einmal langsam reinkommen.

Wenn du dir selbst einen Gefallen tun willst - lerne die Grundlagen und strukturiere sofort um. Sonst schlägst du dich bis dahin mit Problemen rum, die es mit vernünftigem Datenmodell nicht gibt. Das spart dir Zeit und Ärger und lässt dich "nicht gleich in die Luft gehen" ;)
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

ha-be

Die Felder KatasterNr sind reine Textfelder.

sHardware (für sucheHardware) ist die Bezeichnung des Suchfeldes im Formular.

Mit Deiner Ergänzung
sSQL = sSQL & " WHERE [KatasterNr] & "|" & [KatasterNr2] & "|" &  [KatasterNr3] LIKE '*" & sHardware & "*'"
bekomme ich eine Fehlermeldung.
"Fehler beim Kompilieren...Syntaxfehler.




ha-be

Zitat von: el_gomero am Juni 14, 2017, 13:27:16

Wenn du dir selbst einen Gefallen tun willst - lerne die Grundlagen und strukturiere sofort um. Sonst schlägst du dich bis dahin mit Problemen rum, die es mit vernünftigem Datenmodell nicht gibt. Das spart dir Zeit und Ärger und lässt dich "nicht gleich in die Luft gehen" ;)

Werde ich auf alle Fälle in den nächsten Tagen in Angriff nehmen.
Die Lösung hier brauche ich erst einmal um jetzt aktuell auch Auskünfte aus der Datenbank geben zu können... :P

el_gomero

Franz hat 2 Fragen gestellt, die noch nicht beantwortet sind ...
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

ha-be

Welche Fragen?

Hatte ich doch beantwortet...

Zitat von: ha-be am Juni 14, 2017, 13:32:11
Die Felder KatasterNr sind reine Textfelder.

sHardware (für sucheHardware) ist die Bezeichnung des Suchfeldes im Formular.

ha-be

Bekomme mit der (geänderten) Zeile

sSQL = sSQL & " WHERE [KatasterNr] & "|" & [KatasterNr2] & "|" & [KatasterNr3] & " LIKE '*" & sHardware & "*'"

immer noch einen Syntaxfehler :-[

ha-be

el_gomero

Zitat
Welche Fragen?

Hatte ich doch beantwortet...

hatte ich übersehen, sorry. Gehe davon aus dass "reine Textfelder" als vom Datentyp Text zu verstehen ist.

Normal weiss Franz genau was er schreibt, aber die Pipes kann ich hier auch nicht erklären. Egal mit Verkettung der Felder kannst du auf den Inhalt prüfen.

Könnte dann so funktionieren:


sSQL = sSQL & " WHERE [KatasterNr] & [KatasterNr2] & [KatasterNr3] LIKE '*" & Me!sHardware & "*'"


Voraussetzung dafür ist, dass der Code aus dem geöffneten Form aufgerufen wird. Sonst muss das Me! durch Forms!Formname! ersetzt werden.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

ha-be

Hallo Jürgen,

vielen Dank.
Jetzt klappt's  :)

Werde mich ab der nächsten Woche mal der Datenbank widmen und versuchen, das mal auf einen ordentlichen Stand zu bringen.

Vielen Dank
und allen ein schönes Wochenende...
ha-be

Beaker s.a.

Und ich hab mal wieder Blödsinn verzapft  >:( >:(
Also bitte vergessen.
(Beitrag gelöscht)
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,


die Pipes sind nur (normalerweise im Feldinhalt nicht verwendete) Zeichen zwecks Trennung der einzelnen Strings.


z. B.   
werden bei Eingabe von "Lindau" auch "Berlin" und "Dauchingen" gefunden, wenn die Trennzeichen nicht eingebaut werden.



Und Sorry, habe falsche "Anführungszeichen" benutzt:

sSQL = sSQL & " WHERE [KatasterNr] & '|' & [KatasterNr2] & '|' &  [KatasterNr3] LIKE '*" & sHardware & "*'"