Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ACCESS + VBA - Programmierung... Was mach ich da falsch?

Empfohlene Antworten

Veröffentlicht

Hallo,

kann mir da jemand vielleicht erklären, was ich da falsch gemacht habe??

Option Compare Database

Option Explicit

Dim strTest As String

strTest = InputBox(Prompt:="Bedingung eingeben", Title:="Eingabe")

Set db = CurrentDb

Set rs = db.OpenRecordset("SELECT SAMPLE.LOT_ID, SAMPLE.SMP_NO, CHARACTERISTIC.CHR_NAME, ATTRIBUTE_TEST.ATS_ERROR_COUNT, SAMPLE.PER_ID, to_char (sample.SMP_DATE,'yyyymmdd') "Tag", to_char (sample.SMP_DATE,'hhmi am') "Zeit", LOT.LOT_START , MAN_ORDER.MOR_TRACK, MAN_ORDER.SYS_ID FROM PDV22.ATTRIBUTE_TEST ATTRIBUTE_TEST, PDV22.CHARACTERISTIC CHARACTERISTIC, PDV22.LOT LOT, PDV22.MAN_ORDER MAN_ORDER, PDV22.SAMPLE SAMPLE WHERE SAMPLE.LOT_ID = LOT.LOT_ID AND MAN_ORDER.SYS_ID = = '" & strTest & "' AND SAMPLE.LOT_ID = ATTRIBUTE_TEST.LOT_ID AND ATTRIBUTE_TEST.SMP_NO = SAMPLE.SMP_NO AND ATTRIBUTE_TEST.CHR_NO = CHARACTERISTIC.CHR_NO AND LOT.MOR_NO = MAN_ORDER.MOR_NO And LOT.LOT_START <= sysdate AND SAMPLE.TTP_CODE=4 order by MAN_ORDER.SYS_ID, MAN_ORDER.MOR_TRACK, CHARACTERISTIC.CHR_NAME, sample.SMP_DATE;)

Danke & Gruß

Chris;-)

Ich versuche gerade, mich da einzilesen.

Wenn's übersichtlicher wäre, wäre das einfacher, sich da einzulesen.

Vielleicht hast du in diesem Spaghetti-String einfach ein Komma, oder ein Leerzeichen zuviel oder weggelassen ?

UPDATE:

Du hast geschrieben:

Set rs = db.OpenRecordset("SELECT 

usw. , aber den String nicht mit einem " vor der *abschliessenden* Klammer (gaanz am Ende) abgeschlossen.

Könnte es das sein ?

Hmmm ok...

Das war es nicht...

Jetzt meckert die Kiste nur noch rum wegen dem Teil "Tag" und "Zeit".... Wahrscheinlich muss ich das irgendwie anders lösen. Ich glaube, dass er die "Gänsefüschen" als Ende des Strings ansieht. Kann deshalb mit Tag nix anfangen....

Da gabs doch mal was mit ..." & chr(??) & " Tag " & chr(??) & "....

Jetzt müsste ich nur noch die Zahl vom Gänsefüschen wissen, dann könnte ich das nochmal versuchen... Ist das der ASCII Code?

Gruß

Chris;-)

Original geschrieben von ChrisDaHub

Da gabs doch mal was mit ..." & chr(??) & " Tag " & chr(??) & "....

Jetzt müsste ich nur noch die Zahl vom Gänsefüschen wissen, dann könnte ich das nochmal versuchen... Ist das der ASCII Code?

Gruß

Chris;-)

ja. isses. dein gänsefüsschen ist glaub ich 34 oder so... weiss ich nich so genau...

Jetzt bringt er schonmal keinen fehler mehr :P

Nur wie bekomm ich das jetzt auf nen Button in einem Formular unter Access 97 ?

Wer ist denn da Profi?

Gruß

Chris :D

Button setzten, Rechtsklick drauf, Eigenschaften, Ereignisse, Beim Klicken -> Ereignisprozedur, ... klicken, Code reinkopieren...

Gruß

JayN

P.S. Ich hoffe, ich habe die Frage richtig verstanden....

HI,

Danke für die schnelle Antwort...

Hab ich so gemacht wie vorgegeben.

Jetzt kommt nur eine Fehlermeldung:

Er sagt " Fehler beim Kompilieren: Außerhalb einer Prozedur ungültig!"

Dann geht er in den VB-Editor und markiert folgende Stelle:

strTest = InputBox("Nach welcher Kundennummer möchten Sie suchen?","Frage")

Jetzt verzweifel ich bald..... *heul*

Chris

Der Aufruf muss innerhalb einer Prozedur oder Funktion passieren.


sub name-der-prozedur (<parameter, falls noetig, hier rein>)


<hier deine anweisungen>


end sub


oder

function name-der-funktion (<parameter, falls noetig, hier rein>) as <rueckgabetyp>


<hier deine anweisungen>


name-der-funktion = <rueckgabewert>

end function


Die Teile zwischen <> musst du Deinen Anforderungen anpassen;)

Nachdem Du, die von mir genannten Schritte getan hast, erstellt Access einen Prozedur-Rahmen -> Sub - End Sub. Dazwischen mußt Du Deinen Code einfügen!

OK - Jetzt versucht er wenigstens schon mal was auszuführen....

Jedoch leider nur mit Fehlermeldung. Er sagt, dass ich einen Syntaxfehler gemacht habe. Fehlender Operator in Abfrageausdruck. :confused: Er markiert mir die Stelle, die ich hier blau dargestellt habe:

Set rs = db.OpenRecordset("SELECT SAMPLE.LOT_ID, SAMPLE.SMP_NO, CHARACTERISTIC.CHR_NAME, ATTRIBUTE_TEST.ATS_ERROR_COUNT, SAMPLE.PER_ID, to_char (sample.SMP_DATE,'yyyymmdd') " & Chr(34) & "Tag" & Chr(34) & ", to_char (sample.SMP_DATE,'hhmi am') " & Chr(34) & "Zeit" & Chr(34) & ", LOT.LOT_START , MAN_ORDER.MOR_TRACK, MAN_ORDER.SYS_ID FROM PDV22.ATTRIBUTE_TEST ATTRIBUTE_TEST, PDV22.CHARACTERISTIC CHARACTERISTIC, PDV22.LOT LOT, PDV22.MAN_ORDER MAN_ORDER, PDV22.SAMPLE SAMPLE WHERE SAMPLE.LOT_ID = LOT.LOT_ID AND MAN_ORDER.SYS_ID = = '" & strTest & "' AND SAMPLE.LOT_ID = ATTRIBUTE_TEST.LOT_ID AND ATTRIBUTE_TEST.SMP_NO = SAMPLE.SMP_NO AND ATTRIBUTE_TEST.CHR_NO = CHARACTERISTIC.CHR_NO AND LOT.MOR_NO = MAN_ORDER.MOR_NO And LOT.LOT_START <= sysdate AND SAMPLE.TTP_CODE=4 order by MAN_ORDER.SYS_ID, MAN_ORDER.MOR_TRACK, CHARACTERISTIC.CHR_NAME, sample.SMP_DATE;")

:rolleyes:

Ich kann da aber keinen Fehler finden...

chris

Kannst Du die Anweisung nicht ein bißchen formatieren? Einrücken, Großschreibung bei SQL-Befehlen, Kleinschreibung bei Rest?

So ist es für mich schwierig mich da einzulesen und einzudenken.

Gruß

JayN

to_char (sample.SMP_DATE,'yyyymmdd')

Was soll das für ein(e) Befehl/Funktion sein? SQL oder programmintern?

WHERE SAMPLE.LOT_ID = LOT.LOT_ID AND MAN_ORDER.SYS_ID = = '" & strTest & "' AND SAMPLE.LOT_ID

Was sollen die zwei "="-Zeichen? Passt das?

Original geschrieben von JayN

to_char (sample.SMP_DATE,'yyyymmdd')

Was soll das für ein(e) Befehl/Funktion sein? SQL oder programmintern?

Das ist ein SQL-Befehl. Er gibt mir das Datumsfeld im Format "yyyymmdd" zurück.

Diesen Befehl finde ich in der Access-Hilfe nicht. Sicher, dass er (in dieser Form) in Access existiert?

Naja - mehr oder weniger... Es ist ein SQL-Befehl... Der Befehl soll ja eigentlich von der Oracle Datenbank (AIX Maschine) verarbeitet werden... Wird der nicht einfach so übertragen???

Habs jetzt mal mit "AS" versucht... Das hat er genommen.... Nur jetzt hab ich nen Laufzeitfehler 424...... Mal sehn, ob ich darüber was auf ner TechNet CD von MS finde...

Chris;-) :D

Hallo?

Könntest du mir bitte genauer erklären, was du damit meinst?

Gruß

CH

Moin !

da ich ziemlich viel mit Access mache, dacht ich geb ich mal meinen Senf dazu...

zu der Anweisung:

to_char (sample.SMP_DATE,'yyyymmdd') " & Chr(34) & "Tag" & Chr(34) & ",

ein Problem sind die " Chr(34) " Anweisungen, die funzen nich, lass sie einach weg oder nimm eckige Klammern wenns mehre Worte sind:

"select blablub.braselschasel as Tag, ...."

bzw. "select blablub.braselschasel as [super Tag],..."

das andere Problem ist, daß meines Wissens die " to_char(...) " Anweisung nur unter Oracle funzt, Access kennt die nicht.

Um das Datum im "JJJJMMTT" auszugeben fällt mir nur folgendes ein:

DateSerial(Year(sample.SMP_DATE),Month(sample.SMP_DATE),Day(sample.SMP_DATE)) AS Tag,

(Ich weiss ist lang, vielleicht hat einer ne bessere Idee)

der Fehler "Fehlender Operator in Abfrageausdruck" kommt von dieser Stelle:

AND MAN_ORDER.SYS_ID = = '" & strTest & "'

da ist ein Gleichzeichen zuviel (hat JayN oben schon bemerkt, ich weis nur noch mal drauf hin ;) )

das war es so auf den ersten Blick, hoffe es hilft Dir weiter!

gruß

Christian

----------------------------------------------------------------------------------

"Schwerer Ausnahmefehler" - wenn das mal ne Ausnahme wär...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.