Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Microsoft Microsoft Office

GELÖST

Access XP Sprachenabhängige ADO-Abfrage

Mitglied: ichbinhier

ichbinhier (Level 1) - Jetzt verbinden

19.04.2011 um 12:25 Uhr, 3091 Aufrufe, 5 Kommentare

Access XP
ADO 2.1
DAO 3.6

Mahlzeit,

ich hätte da eine Frage zu Access XP und den dazugehörigen ADO-Abfragen und zwar möchte ich gerne eine dynamische Abfrage nach Sprache haben.
Ich habe eine Tabelle mit 7 Spalten. Eine Spalte entspricht immer eine Sprache, bsp

                        Spalte1      Spalte2      Spalte3      [...]      Spalte7
Spaltentitel   DE               GB               FR               ES               IT
1. Tupel         Montag       Monday       ....               ....               ....



01.
Public Function fct_Sprache(lang As String, tabelle As String) 
02.
    ' lang = language 
03.
 
04.
    Dim i As Integer 
05.
     
06.
    Dim ado_RS As ADODB.Recordset 
07.
    Set ado_RS = New ADODB.Recordset 
08.
     
09.
    Dim str_query As String 
10.
    str_query = "SELECT " & lang & " FROM " & tabelle 
11.
     
12.
    ado_RS.Open str_query, CurrentProject.Connection, adOpenStatic, adLockReadOnly 
13.
     
14.
    ado_RS.MoveLast 
15.
    ado_RS.MoveFirst 
16.
     
17.
    For i = 1 To UBound(str_Text)           ' Von 1 bis maximale Größe der Variable 
18.
     
19.
        str_Text(i) = Eval("ado_RS!" & lang) 
20.
         
21.
        ado_RS.MoveNext 
22.
     
23.
    Next 
24.
     
25.
    ado_RS.Close 
26.
    Set ado_RS = Nothing 
27.
     
28.
End Function
Sinn und Zweck dieser Funktion ist es, dass ich Spalten in einer erstellten Excel-Tabelle je nach der Sprache unterschiedlich mit einer Überschrift versehe und diese unterschiedlichen Sprache soll er sich aus den verschiedenen Spalten in der Access-Tabelle holen.

Mir geht es jetzt darum, dass Access bei der Zeile 19 (str_Text(i) = Eval("ado_RS!" & lang)) meckert, dass es diesen Namen nicht gefunden hat. Wie spreche ich denn dynamisch jeweils immer die richtige Spalte / Sprache an? Also es soll bspw. herauskommen (str_Text(i) = ado_RS!DE o.Ä.)

Ich hoffe ich habe es nicht zu kompliziert erklärt.

Gruß
Axel
Mitglied: SlainteMhath
19.04.2011 um 13:06 Uhr
Moin,

m.E. ist deine Datenstruktur ungeeignet. Was machst Du z.b. wenn eine Sprache hinzukommt? Die Definition von x Tabellen ändern? Naja

wie wär's mit einer Tabelle ala
01.
ID  | LANG | TEXT 
02.
MON | DE   | Montag 
03.
MON | EN   | Monday 
04.
DIE | DE   | Dienstag 
05.
DIE | EN   | Tuesday
Primary Key wäre ID+LANG

An die Funktion übergibst du dann nur noch ID und LANG und bekommst mittels
01.
"SELECT TEXT FROM tabelle WHERE ID=<id> AND LANG=<lang>"
das Ergebniss zurück.

lg,
Slainte

/EDIT: Und im übrigen ist die Variable str_Text in deiner Funktion nicht definiert. Evtrl. kommt die Fehlermeldung daher.
Bitte warten ..
Mitglied: ichbinhier
19.04.2011 um 13:40 Uhr
Moin zurück,

an eine andere Datenstruktur habe ich auch schon dran gedacht, aber irgend wie kommt meine mir einfacher vor. Zumal das Ergebnis in einem Array landet. Die Variable str_Text ist ein Public Array, dass ausserhalb deklariert ist.

Wie würde ich denn bei Deiner Idee anstatt in die Zeile mit (..MoveNext) in die nächste Spalte springen?

Gruß
axeos
Bitte warten ..
Mitglied: SlainteMhath
19.04.2011 um 13:59 Uhr
Die Variable str_Text ist ein Public Array, dass ausserhalb deklariert ist.
NIcht gerade die sauberste Programmier-Methode Warum gibts du das Array nicht als Ergebnis der Function zurück?

Wie würde ich denn bei Deiner Idee anstatt in die Zeile mit (..MoveNext) in die nächste Spalte springen?
Wenn alles in ein Array soll, kannst Du das so machen:
01.
str_qery="SELECT TEXT FROM tabelle WHERE ID='" & id & "'" 
02.
 
03.
ado_RS.Open str_query, CurrentProject.Connection, adOpenStatic, adLockReadOnly  
04.
 
05.
do while not ado_RS.EOF 
06.
 
07.
  str_Text(i)=ado_RS!TEXT 
08.
  i=i+1 
09.
  ado_RS.MoveNext 
10.
done 
11.
ado_RS.Close 
Allerdings erschliest sich mir nicht, warum alle Sprachen eines Begriffs (ohne die Sprache als INdex) in einem Array stehen sollen - Du wirst schon wissen was du damit tust

/EDIT: Typo
Bitte warten ..
Mitglied: ichbinhier
19.04.2011 um 15:09 Uhr
Hallo,

ich denke manchmal etwas quer. Warum ist das nicht die sauberste Programmiermethode??? Das erschließt sich mir nicht.

Habe ich was falsch verstanden?? Das Ergebnis der Funktion wird doch in das Array zurück gegeben??!!??

Das Ergebnis soll sein, dass ich

Monday
Tuesday
Wednesday
[...]

in einer Array-Variable stehen habe und in einem Sub, wo ich die Excel-Tabelle erstelle, greift er auf dieses Array in einer For-i Schleife zurück und schreibt die einzelnen Texte als Spaltenbegriffe. Klappt auch wunderbar genau so wie ich mir das vorstelle.

Gruß
Axel
Bitte warten ..
Mitglied: SlainteMhath
19.04.2011 um 15:22 Uhr
ich denke manchmal etwas quer. Warum ist das nicht die sauberste Programmiermethode??? Das erschließt sich mir nicht.
Welchen Wert hat str_Text() wenn ein fehler in der Funtion auftritt? oder wenn das SELECT nichts zurueck gibt? oder wenn die Function 2mal aufgerufen wird?

Habe ich was falsch verstanden?? Das Ergebnis der Funktion wird doch in das Array zurück gegeben??!!??
Nicht ganz das gleiche. So wär's sauber:
01.
public function fct_Sprache(...) as Array 
02.
  dim str_Temp() as String 
03.
  ado_RS.Open .... 
04.
  do while ... 
05.
    str_Temp(i)=ado_RS!.... 
06.
    i=i+1 
07.
  done 
08.
  fct_Sprache = str_Temp 
09.
end function 
10.
 
in einer Array-Variable stehen habe und in einem Sub, wo ich die Excel-Tabelle erstelle, greift er auf dieses Array in einer For-i
Schleife zurück und schreibt die einzelnen Texte als Spaltenbegriffe. Klappt auch wunderbar genau so wie ich mir das
vorstelle.
Meiner Erfahrung nach rächen sich solche Konstrukte fürher oder später und dann hinterher den Code und die DB umzubiegen ist... häßlich Ich bin eher ein Freund hiervon
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Access 2010 - Listenfeld an ADO-Recordset knüpfen
gelöst Frage von AndyAhDatenbanken9 Kommentare

Hi NG, wie kann ich ein Listenfeld an ein ADO-Recordset knüpfen. Die zugrundeliegende Datenquelle ist keine mit Access verknüpfte ...

Microsoft Office
Access Abfrage Sotieren
Frage von charmeurMicrosoft Office2 Kommentare

Hallo Ihr da ich blutiger nichts wisser in Access bin wende ich mich an euch ich möchte so eine ...

Microsoft Office
ACCESS - Problem - Bericht - Abfrage
Frage von caschoplMicrosoft Office6 Kommentare

Hallo, ich möchte eine kleine Datenbank für unsere Handy und Mobilverträge erstellen, damit wir diese einfach besser Verwalten können. ...

Batch & Shell
Powershell Access Abfrage auslesen?
gelöst Frage von Druide83Batch & Shell2 Kommentare

Hallo, langsam bin ich am verzweifeln. Ich versuche Werte aus einer Access-Abfrage auszulesen. Selbe Methode funktioniert einwandfrei wenn ich ...

Neue Wissensbeiträge
Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 12 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 13 StundenSicherheit7 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 13 StundenSicherheit8 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 14 StundenSicherheit12 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen20 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...