Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: niki89 am Februar 25, 2013, 11:16:11

Titel: Feldnamen anpassen
Beitrag von: niki89 am Februar 25, 2013, 11:16:11
Hallo,

Hab ein dringendes Problem und weiß nicht ob das überhaupt geht:

Ich hab eine Abfrage mit einer Spalte, wo die Gesamtkosten eines bestimmten Jahres berechnet werden.
Dies mache ich mit einem Kriterium, wo eine Box aufgeht, wo ich das Jahr eingeben kann, welches berechnet werden soll.

Nun möchte ich in der Spaltenüberschrift folgendes stehen haben.

Gesamtsumme von Jahr X: Kosten1+Kosten2
Für das X soll nun das Jahr eingetragen werden, welches ich als Kriterium in der Box definiert habe.

Hab bereits folgendes probiert.

Gesamtsumme von Jahr [Bitte Jahr eingeben]: ...
--> doch dies lässt er nicht zu, da angeblich [] nicht erlaubt ist.

Bitte um Hilfe!
Danke!
Titel: Re: Feldnamen anpassen
Beitrag von: 69bruno am Februar 25, 2013, 11:21:26
 ???

Was willst Du damit in der Spaltenüberschrift einer Abfrage ?

Generiere einen Bericht aus der Abfrage und Du kannst die Überschrift wählen, wie Du willst.

Abfragen sind keine Drucklayouts.............
Titel: Re: Feldnamen anpassen
Beitrag von: niki89 am Februar 25, 2013, 12:32:35
Ein Bericht ist in diesem Fall nicht sinnvoll, da ich dafür zu viele Felder habe und dies unübersichtlich in einem Bericht wird.
Weiters möchte ich mit den Daten weiterarbeiten.

Es ist so, dass bei mir auf Knopfdruck die Tabellenansicht der Abfrage aufgeht und man hier eine Zusammenfassung der Daten bekommt.
Weiters kann man weitere Daten importieren, welche dann automatisch als neue Felder hinzugefügt werden.

Daher hätte ich einfach gern zur besseren Übersicht das Jahr in dieser Überschrift eingetragen.
Titel: Re: Feldnamen anpassen
Beitrag von: 69bruno am Februar 25, 2013, 14:45:30
Man arbeitet nicht in Abfragen !

Dann erstell ein Formular in der Datenblattansicht, welches auf deiner Abfrage basiert und gib dort einen sprechenden Spaltennamen ein.
Titel: Re: Feldnamen anpassen
Beitrag von: MzKlMu am Februar 25, 2013, 18:13:58
Hallo,
wenn es unbedingt mit der Abfrage sein soll, versuche es mal so:
Gesamtsumme von Jahr: [Bitte Jahr eingeben] & " " & (Kosten1+Kosten2)
Beachte den verschobenen Doppelpunkt gegenüber Deinem Versuch.
Titel: Re: Feldnamen anpassen
Beitrag von: database am Februar 25, 2013, 20:10:00
Hallo,

leider ändert das nicht die Spaltenüberschrift sondern nur den Feldinhalt.

Aber du könntest im Klick-Ereignis deines Button den SQL-String deiner Abfrage zusammenbauen und dann deiner Abfrage zur Laufzeit zuweisen.

z.B.:


Private Sub Befehl0_Click()

    Dim strSQL As String
    Dim strTitel As String
   
    strTitel = "Gesamtsumme von Jahr " & InputBox("Jahr") & ": Kosten1+Kosten2"
   
    strSQL = "SELECT Feld1, Feld2, [Kosten1] + [Kosten2]" & " AS [" & strTitel & "] FROM DeineTabelle"
   
    CurrentDb.QueryDefs("DeineAbfrage").SQL = strSQL
   
    DoCmd.OpenQuery "DeineAbfrage"

End Sub


HTH
Titel: Re: Feldnamen anpassen
Beitrag von: niki89 am Februar 26, 2013, 10:37:20
Danke für die tolle Antwort.

Wenn ich nur 1 Tabelle hätte, auf welche die SELECT zugreift, würde es gehen.

Mein Problem ist noch dass eben bei der SELECT Felder aus insgesammt 7 verschiedenen Tabellen genommen werden.
Lässt sich das auch in der SELECT darstellen?

LG
Titel: Re: Feldnamen anpassen
Beitrag von: MzKlMu am Februar 26, 2013, 10:44:19
Hallo,
das mit den 7 Tabellen musst Du mal genauer erklären.
Warum sind das 7 Tabellen?
Sind die alle 7 Tabellen gleich aufgebaut?
Titel: Re: Feldnamen anpassen
Beitrag von: niki89 am Februar 26, 2013, 12:28:54
Hallo,

Folgende Struktur:

1. Tabelle KD-Nr. (2 Felder)--> von dieser gehen alle Beziehungen weg.
2. Tabelle jährliche Kosten (alle Felder)
3. Tabelle Quartalskosten (alle Felder)
4. Tabelle Monatskosten (alle Felder)
5. Tabelle statistische Daten (alle Felder)
6. Tabelle Jahreskostehochrechnung (2 Felder)
7. Tabelle Quartalskostenhochrechnung (2 Felder)
8. Tabelle Monatskostenhochrechnung (2 Felder)

Diese Felder reihe nacheinander in die neue Abfrage ein un mach dazwischen noch 3 neue Felder mit Berechnungen aus diesen Tabellen.

Interessant wäre nun für mich wie ich in der Select-Anweisung sagen kann, dass aus verschiedenen Tabellen genommen werden soll.

z.B. Select Feld 1, Feld 2 from Tabelle 1; Select Feld 1, Feld 2 from Tablle 2; ...

Danke!

Titel: Re: Feldnamen anpassen
Beitrag von: database am Februar 26, 2013, 12:33:27
Hallo,

du brauchst ja nur das SQL-Statement der Originalabfrage nehmen und dann für die Laufzeitzuweisung anpassen.
Egal wieviele Tabellen für die Abfrage in Beziehung gestzt werden, ändern musst du nur die Spaltenbeschreibung in der Feldliste.

Das schaut dann halt in Etwa so aus ...

strSQL = "SELECT Tab1.Feld1, Tab2.Feld2, TabX.FeldX, [TabY].[Kosten1] + [TabY].[Kosten2]" & " AS [" & strTitel & "] FROM Tab1 INNER JOIN (.... usw."

Auf diese Weise wird die Darstellung der Spaltenliste geändert und dieser geänderte SQL-String der Abfrage mit...

CurrentDb.QueryDefs("DeineAbfrage").SQL = strSQL

...wieder zugewiesen.

Danach wird die Abfrage geöffnet (und natürlich ausgeführt) wobei dann die gänderte Spaltenbezeichnung angezeigt wird.


p.s. weil ich gerade sehe, dass du geantwortet hast...

Ich gehe aber schon davon aus, dass die Abfrage OHNE die gänderte Spaltenbezeichnung bereits existiert.
Wenn du dann den Abfrageentwurf öffnest und die SQL-Ansicht anzeigen läßt, kannst du von dort den SQL-String
kopieren und in der Prozedur der Variablen 'strSQL' zuweisen.
Für das entsprechende Feld setzt du dann  ...   [TabY].[Kosten1] + [TabY].[Kosten2]" & " AS [" & strTitel & "]  ....  in diesen String ein.

Die Tabellenstruktur die du da angegeben hast scheint mir aber auch etwas weitläufig - um das mal so zu formulieren.
Warum? Nun Monatskosten und Quartalskosten lassen sich per Abfrage aus den Jahreskosten extrahieren und die Tabellen XYZhochrechnung scheinen mir ebenfalls nur berechnete Daten zu enthalten.
Titel: Re: Feldnamen anpassen
Beitrag von: niki89 am Februar 26, 2013, 13:15:50
Super, soweit mal klar. Danke!

Nun will ich aber, dass das Jahr welches ich in die InputBox eingebe mir in der Tabelle Monatskosten als Kriterium dient.
Also dass nur die Daten angezeigt werden, von z.B. 2011

Dies hatte ich vorher mit dem Kriterium [Bitte Jahr eingeben] gemacht.
Wie kann ich das jetzt verbinden?

LG
Titel: Re: Feldnamen anpassen
Beitrag von: database am Februar 26, 2013, 21:03:59
Hallo,

welchen Felddatentyp hat das Feld 'Jahr' in der Tabelle 'Monatskosten' ?
oder wie ist dieses Feld deklariert?

Wenn 'Jahr' etwa ein Zahlenfeld ist, dass nur die Jahreszahl entält muss die Prozedur geringfügig abgeändert werden.


Private Sub Befehl0_Click()

   Dim strSQL As String
   Dim strTitel As String
    Dim intJahr as Integer
   
   intJahr = CInt(InputBox("Jahr"))

   strTitel = "Gesamtsumme von Jahr " & intJahr & ": Kosten1+Kosten2"
   
   strSQL = "SELECT Tab1.Feld1, Tab2.Feld2, TabX.FeldX, [TabY].[Kosten1] + [TabY].[Kosten2]" & " AS [" & strTitel & "] FROM Tab1
             INNER JOIN (.... usw ... ) ... WHERE Monatskosten.Jahr=" & intJahr
   
   CurrentDb.QueryDefs("DeineAbfrage").SQL = strSQL
   
   DoCmd.OpenQuery "DeineAbfrage"

End Sub

Titel: Re: Feldnamen anpassen
Beitrag von: niki89 am Februar 28, 2013, 11:11:21

Vielen Dank!
Funktioniert soweit schon mal super.

Jetzt noch eine Frage. - wenn ich nun 3 where Bedingen machen möchte wie schreib ich das hinein?

mein Lösungsansatz:

where [Wartungskostensumme_Jahresabfrage].[Abrechnungsjahr]=" & intJahr & " where [Transaktionskostensumme_Jahresabfrage].[Jahr]=" & intJahr &" where [....

Da fehlt aber irgendwo eine Verbindung.

Danke!
Titel: Re: Feldnamen anpassen
Beitrag von: database am Februar 28, 2013, 20:08:21
Hallo,

in dem Fall verwendest du nicht 3x WHERE sondern verbindest die Argumente mit den passenden bzw. benötigten Operatoren AND / OR

also in der Form:

WHERE [Wartungskostensumme_Jahresabfrage].[Abrechnungsjahr]=" & intJahr & " AND [Transaktionskostensumme_Jahresabfrage].[Jahr]=" & intJahr & " AND [....
Titel: Re: Feldnamen anpassen
Beitrag von: niki89 am März 01, 2013, 13:52:09
Hi,

Meine DB ist eindeutig zu komplex - leider gehts nicht besser mit meinen Kenntnissen.
Lerne aber bereits sehr viel dazu - hierfür danke! 

Ich glaube das ist jetzt aber wirklich meine letzte frage dazu:

Unter der Tabelle [Transaktionskostensumme_Jahresabfrage] hängt die Tabelle [Anzahl der Monate].

In dieser Abfrage gibt es das Feld: Jahr: Jahr([Datum]) und als Kriterium bräuchte ich wieder das Jahr, welches wir als intJahr definiert haben.

Ich habe bereits versucht bei where folgendes einzugeben:

..."& intJahr & " and [Anzahl der Monate].Year([Datum])=" & intJahr
oder
..."& intJahr & " and Year([Anzahl der Monate].[Datum])=" & intJahr

doch er erkennt dies nicht als Feld.

Ist die Formel falsch? Muss ich die Tabelle extra als FROM hinzufügen? wenn ja wie? (Felder daraus brauch ich für die Tabelle nicht)

DANKE!

LG
Titel: Re: Feldnamen anpassen
Beitrag von: database am März 01, 2013, 17:00:14
Hallo,

ist [Anzahl der Monate] nun eine Tabelle oder eine Abfrage...  ???

Wenn du in deiner Abfrage ein berechnetes Feld abfragen möchtest  ... Jahr: Year([Datum])
dann mußt du in der Abfrage (SQL-String) dieses Feld auch verwenden, im Abfrageentwurf
würdest du ja auch das Kriterium unter dieses Feld schreiben.

... & " and Jahr=" & intJahr

wobei ich dir aber auch gleich wärmstens empfehle deine Tabellen zu durchforsten und reservierte Worte als Feldbezeichnungen zu ändern!

Datum, Jahr ... denkbar schlechte Namenswahl!

HTH