Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Access 2010 SQL Abfrage ergebnis Abfragen VBA

Frage Microsoft Microsoft Office

Mitglied: svenac2010

svenac2010 (Level 1) - Jetzt verbinden

12.05.2013, aktualisiert 19:49 Uhr, 5739 Aufrufe, 8 Kommentare

Hallo,
ich komme an einer Stelle nicht weiter.

ich habe eine SQL Abfrage, welche über ein Kriteriumswert() mir eine Anzahl von Werten zurückliefert


01.
SELECT [CROSS Betriebe].Betriebsnummer, Count([CROSS Betriebe].Hauptbetrieb) AS AnzahlvonHauptbetrieb 
02.
FROM [CROSS Betriebe] 
03.
GROUP BY [CROSS Betriebe].Betriebsnummer 
04.
HAVING ((([CROSS Betriebe].Betriebsnummer)=varWert()));
Weiter habe ich ein Formular in welches ich den in der SQL Abfrage vorhanden Wert (varWert() ) eingebe.

Nun möchte ich, sobald ich in dem Formular ein Wert eingebe, dieser geprüft wird, ist der wert mehr als 1 mal vorhanden, dann führe X aus ansonsten Y

der Code funktioniert leider so nicht

01.
Private Sub Text190_AfterUpdate() 
02.
 Dim strSQL As String 
03.
 Dim db As DAO.Database 
04.
 'Dim db1 As Database, Liste As Recordset 
05.
  
06.
 
07.
   varWert = Text190 
08.
    DoCmd.Close acForm, "Betriebsübersicht" 
09.
                
10.
         
11.
        strSQL = "SELECT [CROSS Betriebe].Betriebsnummer, Count([CROSS Betriebe].Hauptbetrieb) AS AnzahlvonHauptbetrieb FROM [CROSS Betriebe] GROUP BY [CROSS Betriebe].Betriebsnummer HAVING ((([CROSS Betriebe].Betriebsnummer)=varWert));" 
12.
        Set db = CurrentDb 
13.
        Set Liste = db.OpenRecordset(strSQL, dbOpenSnapshot) 
14.
    MsgBox Liste.RecordCount 
15.
        If Liste.RecordCount > 1 Then 
16.
        ' Führe X aus 
17.
		MsgBox "mehr als 1" 
18.
        
19.
        Else 
20.
		' Führe Y aus 
21.
        MsgBox "nur 1 wert vorhanden" 
22.
 
23.
        End If 
24.
 
25.
End Sub 
26.
 
Es erscheint der Hinweis:
Laufzeitfehler '3061'
1 Parameter wurde erwartet, aber es wurden zu wenig Parameter übergeben


Vielleicht kann mir hier jemand helfen
Mitglied: SlainteMhath
13.05.2013 um 09:35 Uhr
Moin,

magst Du uns auch noch verraten in welcher Zeile der Fehler passiert?`

lg,
Slainte
Bitte warten ..
Mitglied: vossbaer
13.05.2013 um 11:22 Uhr
Moin,

1 Parameter wurde erwartet, aber es wurden zu wenig Parameter übergeben

der Fehler deutet immer auf ein fehlerbehaftetes SQL Statement hin hast Du die Abfrage so schonmal getestet?

LG
Bitte warten ..
Mitglied: SlainteMhath
13.05.2013, aktualisiert um 11:28 Uhr
01.
"SELECT ... HAVING ((([CROSS Betriebe].Betriebsnummer)=varWert));"
Was genau soll den "varWert" sein? Wenn das eine Variable sein soll die aus dem Code an das SQL Statement übergeben werden soll, dann muss das so aussehen:

01.
"SELECT ... HAVING ((([CROSS Betriebe].Betriebsnummer)=" & varWert & "));"
Bitte warten ..
Mitglied: svenac2010
13.05.2013, aktualisiert um 20:12 Uhr
Hallo,
danke für die Rückmeldungen

der VarWert ist ein Textfeld innerhalb eines Formulars.

Der Code soll eigentlich per SQL Abfrage prüfen ob ein Wert innerhalb einer Tabelle wie oft vorhanden ist und sollte dieses der Fall sein entweder oder als Aktion durchführen.

der jetzige code

01.
varWert = Text190 
02.
        strSQL = "SELECT Betriebsnummer FROM [CROSS Betriebe] WHERE Betriebsnummer=" & varWert & ";" 
03.
        Set db = CurrentDb 
04.
        Set Liste = db.OpenRecordset(strSQL, dbOpenSnapshot) 
05.
        MsgBox Liste.RecordCount 
06.
        If Liste.RecordCount > 1 Then 
07.
 '      MsgBox "mehr als 1" 
08.
       'Me!cmdWeiter.Enabled = False 
09.
        Else 
10.
        MsgBox "nur 1 wert vorhanden" 
11.
        'Me!cmdWeiter.Enabled = True 
12.
      Exit Sub 
13.
        End If 
14.
 
15.
end Sub 
16.
 
17.
Funktioniert hier leider nicht. 
18.
Es wird immer nur der wert 1 Ausgegeben, obwohl mehrfach vorhanden. 
19.
Bei einer manuellen Abfrage wird der Richtige Wert zurück gegeben. 
20.
 
21.
Vielleicht kann hier nochmal jemand drüber schauen 
22.
 
23.
Selbst im Bereich 
24.
<code> 
25.
MsgBox Liste.RecordCount
wird nur der Wert 1 anstatt z.b. 4 zurück geliefert
Bitte warten ..
Mitglied: Biber
13.05.2013, aktualisiert um 19:08 Uhr
Moin svenac2010,

die Query macht schon das Richtige (vermutlich), aber was du abfragst, ist doch mitnichten der "AnzahlVonHauptbetrieb"-Wert, der dich vielleicht interessiert.
Du fragst doch immer nur die Anzahl der zurückgegebenen Zeilen (=.RecordCount) ab.
Und die ist immer =1, egal ob nun für den Betrieb varwert=4 nun zurückkommt, dass er 0 oder 1 oder 27 Hauptbetriebe hat.

Works as designed - ich würde mir da gar keine Sorgen machen.

Grüße
Biber
Bitte warten ..
Mitglied: svenac2010
13.05.2013, aktualisiert um 20:12 Uhr
Hallo Biber,

wie frage ich den die Summe in meinem Fall ab, wenn .RecordCount falsch ist.
In der jetzigen SQL Abfrage, wird nur nach Betriebsnummer gesucht, nicht ,mehr nach Hauptbetrieb

Lt. Microsoft wird die Funktion RecordCount wie folgt angegeben

"...
Die RecordCount -Eigenschaft ist eine DAO-Eigenschaft, die die Anzahl der Datensätze in einer Tabelle in Ihrer Access-Datenbank angibt.
..."
Bitte warten ..
Mitglied: svenac2010
13.05.2013, aktualisiert um 20:37 Uhr
Danke, Problem selber behoben.

Er muss auch wissen, wann der letzte Datensatz vorhanden ist


01.
.... 
02.
Set db = CurrentDb 
03.
        Set Liste = db.OpenRecordset(strSQL, dbOpenSnapshot) 
04.
        Liste.MoveLast 
05.
        If Liste.RecordCount > 1 Then 
06.
....
Bitte warten ..
Mitglied: Biber
13.05.2013, aktualisiert um 20:44 Uhr
Moin svenac2010,

upps, sorry, ich hatte immer noch Bezug genommen auf die (korrigierte) Version der "SELECT Count(*)"-Abfrage aller Hauptbetriebsstätten eines Betriebes.

Okay, dann muss die Ursache noch banaler sein - ist denn die vielleicht die "Betriebsnummer" ein numerischer Wert und "varwert" ein Text?

Wäre im moment das Einzige, was mir noch einfiele.

Grüße
Biber

[Edit]
Viiiel langsamer getippselt als svenac2010 --- und ist jetzt gegenstandslos.
{/Edit]
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Datenbanken
gelöst Access 2010 komplizierte Abfrage (3)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Syntaxfehler VBA Access 2010 (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 Abfrage erster Werktag (10)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (12)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...