MS Access: Echt verwirrtes Problem (VBA)

cheeZy

Mitglied
Hi alle,

entweder ist das echt n verwirrter Fehler oder ich mach einfach iwas falsch!

Bei meinem Problem spielen zwei Tabellen mit, wobei es sich um zwei einfach Tabellen handelt mit zwei Spalten. Sie listen Mitarbeiter auf. Die erste Tabelle die internen, die andere die externen. Die Tabellen enthalten nur den Namen (Mitarbeiter) und die Personal-Nummer (pers_nr) und heißen Mitarbeiter: Intern und Mitarbeiter: Extern...
(ich weiß, schreckliche Namenskonventionen, bitte jeder nur einen Stein..)

Jetzt komm ich endlich zum Problem:
Durch zwei einfache Abfragen ermittel ich jeweils die Anzahl an Datensätzen in den Tabellen:
Code:
SELECT Count([pers_nr]) AS Summe FROM [Mitarbeiter: Intern];
Dies liefert die (korrekten) Ergebnisse 28 und 8.

Nun möchte ich keine weitere extra Abfrage erstellen um die Anzahl in einen Bericht zu schreiben, sondern möchte das ganze über VBA realsieren. Dies hab ich wie folgt versucht:
Code:
Private Sub Berichtsfuß_Format(Cancel As Integer, FormatCount As Integer)

    Set conDatabase = Application.CurrentProject.Connection
    Set Record = New ADODB.Recordset
    
    SQL = "SELECT COUNT(pers_nr) FROM [Mitarbeiter: Intern]"
    Set Record = conDatabase.Execute(SQL)
    txtMAintern = Record(0)

    SQL = "SELECT COUNT(*) FROM [Mitarbeiter: Extern]"
    Set Record = conDatabase.Execute(SQL)
    txtMAextern = Record(0)
    Record.Close

    conDatabase.Close
    Set Record = Nothing
    Set conDatabase = Nothing

End Sub

Nun steht liefert aber der erste Select als Ergebnis 36 (also die Summe) und der zweite 0.

Als Korrektur habe ich bereits versucht, erst den Record und alles zu schließen und auf Nothing zu setzen und dann erneut erstellen, was das gleiche Ergebnis lieferte.
Ebenso liefert die Erstellung eines zweiten Records, also die Daten von der Tabelle Extern in Record2 zu schreiben die Ergebnisse 36 und 0.

Woran liegt das? =)

danke

grüße
Carsten
 
Hi,

da Deine beiden Abfragen ansich die richtigen Werte liefern, ist das eindeutig ein VBA-Problem. Bitte einfach einen Moderator, das Thema entsprechend zu verschieben.

LG
 
Moin cheeZy,

in diesem Fall gebe ich kuddeldaddeldu nur zum Teil Recht.

Ja, es stimmt - VBA kann offensichtlich die Tabellen mit den Steinwurfauslösenamen nicht auseinanderhalten ("Mitarbeiter: xxxx"="Mitarbeiter: yyyy").
-> Offensichtlich ist nur der Tabellenname bis "Doppelpunkt" oder "Doppelpunkt-Space" signifikant.

Aber dieses Problem ist doch für Dich ENDLICH die Begründung, diesem Unsinn mit Sonderzeichen in Tabellennamen und/oder Feldnamen ein (organisatorisches) Ende zu setzen.
Im nächsten Anwender/Abteilungsmeeting sprichst Du an, dass genau diese Sonderlocken, die Access und Excel in ihren benutzerfreundlichen Zusammenklick-Datenbank-Features anbieten eben nur begrenzt kompatibel sind und konsequent in jeglicher "produktiver" Umgebung (Firmendaten oder auch nur im Team/von mehr als einem Rechner aus bearbeiteten Daten) TABU sind.

Tabellennamen und Feldnamen brauchen nun zwar nicht mehr irgendwelchen Konventionen
wie "Maximal 8 oder 10 Zeichen des Musters A-Z, 0-9 und das $-Zeichen" entsprechen.

Aber eine Konvention wie folgende ist durchsetzbar in jeder Firma:
- Max 20 Zeichen für Tabellennamen
- bei Tabellennamen KEINE Sonderzeichen inkl keine Leerzeichen [also nicht Namen wie "max. km/h in %"]
- bei Feldnamen dito keine Zeichen mit Seiteneffekten wie Schrägstrich, Pluszeichen etc.

Denn was hier auftritt ist nur ein organisatorisches Problem.
Nichts, was ich den Redmondern anlasten würde.

[Theoretisch kannst Du das Problem umgehen, indem du einen VIEW-Namen "MA_Intern" bzw. "MA_Extern" definierst und im VBA verwendest.
Aber das würde ich nicht erwähnen.]

Grüße
Biber
 
Zuletzt bearbeitet:
Hallo,

habe deinen Rat befolgt, Biber.

Habe die Namen schön geändert und das Problem auch ohne VBA gelöst. hab einfach in den Bericht ein Feld mit folgendem Inhalt eingefügt:
Code:
=DomAnzahl("*";"[Mitarbeiter_Intern]")

Nun habe ich aber ein weiteres Problem, auf die gleiche Art und Weise möchte ich nun aus einer anderen Tabelle eine Spalte summieren.

Habe es wie folgt versucht:
Code:
=DomSumme([Isttage];[Tätigkeit_UrlaubÜberstunden])

Dann bittet er mich aber einen Parameterwert für Tätigkeit_UrlaubÜberstunden einzugeben, obwohl der Tabellenname korrekt ist.
Muss ich also ein Kriterium für die Abfrage übergeben? Denn bei DomAnzahl habe ich es ja uach nicht getan, da übernimmt er einfach die Kriterien der Abfrage.

Habe es wie folgt versucht:
Code:
=DomSumme([Isttage];[Tätigkeit_UrlaubÜberstunden];[PrjNr]="68")

Was das Problem aber leider nicht gelöst hat, denn er verlangt immer noch einen Parameterwert.
 
Ah, habs jetzt.

Musste doch keine Parameter an die Abfrage übergeben ^^ Es fehlten nur die Anführungszeichen:

Code:
=DomSumme("[Plantage]";"[Tätigkeit_UrlaubÜberstunden]")


Danke, an alle die sich Gedanken dazu gemacht haben! :)

Carsten
 
Zurück