chrislm
Goto Top

Über Access SQL Tabelle durchsuchen

Hallo.
Ich habe heute die Access Datenabnk auf sql portiert. Es funktioniert auch alles bisauf das das durchsuchen einer Spalte in einer Tabelle unheimlich lange dauert.

Kann man das irgendwie besser hinbekommen..?
Im moment wird in das Datenfeld geklickt und dann auf strg + f

Content-ID: 191245

Url: https://administrator.de/contentid/191245

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

attix22
attix22 14.09.2012 um 12:07:43 Uhr
Goto Top
Hi,

mit was genau arbeitest du jetzt? MySQL, Oracle ....
Welche Oberfläche benutzt du?

Je nachdem was du durchsuchen willst, solltest du Indizes anlegen.
Das spart eine Menge Zeit. (Was aber bei deinem Strg + F genau gemacht wird weis ich ja nicht.)

Ohne weiter Infos kann ich dir aber auch nicht mehr sagen.

Gruß
chrislm
chrislm 14.09.2012 um 12:11:31 Uhr
Goto Top
Also Frontend Access und als Backend Microsoft SQL
Das Suchen läuft über das Formular, einfach in das Feld klicken und dann mit der Accesseigenen Suchfunktion.
attix22
attix22 14.09.2012 um 12:21:12 Uhr
Goto Top
Hm da kann ich dir dann erstmal nicht weiterhelfen.
Probiers mal mit Indizes auf die Spalten die du brauchst und wo es Sinn macht.
Wie du das aber in Access hinbekommst weis ich nicht.
Falls du mit SQL bewandert bist, schreib dir doch einfach nen Select auf das von dir gesuchte.

Gruß
n4426
n4426 14.09.2012 um 17:10:16 Uhr
Goto Top
Hi,

das Problem bei der Access-Such-Funktion ist, dass vorher die ganze Tabelle vom SQL-Server geladen wird. Das kann je nach Tabellengröße etwas dauern. Ich würd auch über einen Select arbeiten.

Gruß
chrislm
chrislm 14.09.2012 aktualisiert um 19:06:36 Uhr
Goto Top
Kann mir jemand eine Beispiel zeigen, eventuell ein Link wie man das macht..?
Meine Idee war die dass ich ein Textfeld in das Formular lege welches dann zum suchen genutzt wird. Über eine Ereignisprozedur wollte ich dann die suche starten. Aber ich bekommen es nicht hin den Sqlbefehl über das vba zu starten. Falls mir das irgendwann mal gelingt, wollte ich die ID ins Feld ID übermittel mit Me!
NetWolf
NetWolf 14.09.2012 um 21:02:06 Uhr
Goto Top
Grüß Gott,

nochmal genauer nachgefragt: welche Access Version nutzt du? und welchen MS SQL Server auf welchem Betriebssystem?
Der SQL-Server läuft lokal, oder auf einem Server im Netzwerk?

Bitte schreibe immer deinen Kenntnisstand dazu. Dann kann man die Antworten ausführlicher gestalten, wenn du Anfänger bist.
Das erspart dir eine Menge Frust und uns eine Menge Nachfragen.

SQL unter VBA geht z.B. so:

Dim MySQL as String

MySQL = "Select ......"
Docmd.runsql MySQL


Thema "Suche": erstelle im Kopfbereich des Formulars ein Pulldown-Feld für die Suche in einem Feld. Nutzt dafür den Assistenten!!

Grüße aus München
Wolfgang
(Netwolf)
chrislm
chrislm 17.09.2012 aktualisiert um 09:29:08 Uhr
Goto Top
Danke schon einmal für eure Bemühungen. Meine Strategie sieht so aus:
Private Sub Text64_AfterUpdate()
Dim strSQL As String, varAVG
strSQL = "SELECT Erfassung.[ID] * [FROM Erfassung] * WHERE (((Erfassung.[ID])=[ID]));"  
DoCmd.RunSQL strSQL
Me!ID = varAVG
End Sub

Dabei meckert er mir das irgendein Argument fehlerhaft ist...
ICh bastele in Access 2010 aber laufen muss es unter Access 2000....
chrislm
chrislm 18.10.2012 um 11:50:09 Uhr
Goto Top
Zitat von @NetWolf:
Grüß Gott,

nochmal genauer nachgefragt: welche Access Version nutzt du? und welchen MS SQL Server auf welchem Betriebssystem?
Der SQL-Server läuft lokal, oder auf einem Server im Netzwerk?

Bitte schreibe immer deinen Kenntnisstand dazu. Dann kann man die Antworten ausführlicher gestalten, wenn du Anfänger
bist.
Das erspart dir eine Menge Frust und uns eine Menge Nachfragen.

SQL unter VBA geht z.B. so:

Dim MySQL as String

MySQL = "Select ......"
Docmd.runsql MySQL


Thema "Suche": erstelle im Kopfbereich des Formulars ein Pulldown-Feld für die Suche in einem Feld. Nutzt
dafür den Assistenten!!

Grüße aus München
Wolfgang
(Netwolf)

Diese Nummer ist klasse, es funktioniert wunderbar wenn mann weniger als, ich tippe mal 65000, Datensätze in der Datenbank hat. Aber darüber hinaus bekommt er das ganze nicht mehr hin, es werden darüber hinaus keine Datensätze mehr gefunden. Deswegen habe ich zwar eine andere Strategie die aber leider nicht so ganz funktioniert.

Ich habe noch ein Textfeld über das kombinationsfeld gelegt. Dieses Textfeld benutze ich als abfrage für die SQL Datenbank:
SELECT Erfassung.ID, Erfassung.Name, Erfassung.Vorname, Erfassung.Ort, FROM Erfassung
WHERE (((Erfassung.Name)=[Forms]![Erfassung]![Text74]))
ORDER BY Erfassung.Vorname;

Damit das Kobinationsfeld die Abfrage vergisst, lasse ich es vor dem Update des Feldes die Abfrage in dem Kombinationsfeld resetten denn sonst kann ich nicht wiederholt die Abfrage starten:
Me!Kombinationsfeld76.Requery

Jetzt zu meinem Problem, wenn ich nun die ganzen Suchfelder nach diesem Schema aufbaue, habe ich kein Platz mehr in dem Formular selbst. Nun wollte ich ein Suchformular erstellen welches die Daten dann an das "Kontrolle" Formular übergibt und da scheitert es. Ich weiß leider nicht wie ich die Abfrage auf ein anderes Formular übertragen kann.

Nochmal kurz: ich klicke auf suchen, Suchformuar geht auf mit den Feldern, ich suche z.B. nach Müller, finde den Müller in dem Kombinationsfeld, klicke ihn an und er springt mir dann in das Formular Kontrolle mit dem Herrn Müller.
chrislm
chrislm 18.10.2012 aktualisiert um 16:35:24 Uhr
Goto Top
Mittlerweile habe ich es soweit:
Private Sub Kombinationsfeld16_AfterUpdate()
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.  
    Dim rs As Object
   
    
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ID] = " & Str(Nz(Me![Kombinationsfeld16], 0))  
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    DoCmd.OpenForm "Kontrolle"  

    Forms!Kontrolle.SetFocus

 If IsNull(Me!ID) Then

 DoCmd.GoToRecord , , acNewRec
 Else
 Set rs = Forms!Kontrolle.RecordsetClone
 rs.FindFirst "ID = " & Me!ID  
 Forms!Kontrolle.Bookmark = rs.Bookmark

 End If
Errorhandler:
 If Err = 2450 Then
 DoCmd.OpenForm ("Kontrolle")  
 Resume Next
 End If
    
   
End Sub

Da ich in die Abfrage einen genauen Wert eingebe, ist es nun Schwierig die SQL Abfrage nach ähnlichkeite, n abzusuchen wie z.B. ich suche nach Schmidt und es kommt dann auch der Schmidtbauer....
chrislm
chrislm 18.10.2012 um 16:45:48 Uhr
Goto Top
Ich habs:
über SQL kann man das auch:
Wie [Forms]![Suche1]![Text13]

einfach das "Wie" vor das Kriterium und ich kann mit * suchen....