jan von sassen 10 Geschrieben 14. August 2008 Melden Teilen Geschrieben 14. August 2008 Hallo, ich habe zwei Fragen: Ich möchte aus einer Tabelle einer Oracledatenbank die Werte MOTORWAY_ENTRANCE_ID , MOTORWAY_ENTRANCE_NO , NAME and DISTRICT_ID in einem multidimensionalen Array eintragen. Meine Datenbankabfrage sieht wie folgt aus: my query = "select MOTORWAY_ENTRANCE_ID,MOTORWAY_ENTRANCE_NO,NAME,DISTRICT_ID from MOTORWAY_ENTRANCE where DISTRICT_ID LIKE '09%' AND VERSION_NO = '0' AND Version_END IS NULL" 1. Wie definiere ich einen multidimensionalen Array und befülle Ihn dann mit meinen Werten ? Als nächsten Schritt möchte ich dann innerhalb des Array bestimmte Werte raussuchen und diese dann in eine Variable speichern. Also ich hab zum Beispiel eine MOTORWAY_ENTRANCE_NO die 20 ist und eine MOTORWAY_ENTRANCE_NO die 50 ist. Jeweils davor und danach sind noch diverse weitere Nummern vergeben. Ich möchte jetzt alle Einträge, die zwischen der 20 und der 50 liegen in eine separate Variable speichern. 2. Wie kann ich diese Suche über den oben definierten multidimensionalen Array am besten umsetzen ? Gruß und Dank vsassenj Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 14. August 2008 Melden Teilen Geschrieben 14. August 2008 1. Wie definiere ich einen multidimensionalen Array und befülle Ihn dann mitmeinen Werten ? Spannende Gegenfrage: Mit was willst du denn skripten / programmieren? Die Programmiersprache wäre da schon entscheidend. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 14. August 2008 Melden Teilen Geschrieben 14. August 2008 prinzipiell kannst du mal nach "jagged array" oder "multidimensional array" googeln. Dazu noch die bevorzugte Sprache als Stichwort, dann bekommst du reichlich Treffer cu blub Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 14. August 2008 Melden Teilen Geschrieben 14. August 2008 Moin, abgesehen von der ebenso naheliegenden wie berechtigten Frage nach der Skriptsprache wäre es evtl. interessant für dich, per ADO mit einem lokalen Recordset zu arbeiten statt mit einem Array. Das hat den Charme, dass du dann mit Datenbankmethoden arbeiten kannst. Ein Beispiel findest du hier: faq-o-matic.net » Mailadresse gezielt suchen Gruß, Nils Zitieren Link zu diesem Kommentar
jan von sassen 10 Geschrieben 14. August 2008 Autor Melden Teilen Geschrieben 14. August 2008 Moin, hab ich ganz vergessen zu sagen. Ich möchte das in VBA umsetzten. Gruß vsassenj – Noch ein nachtrag: Der Zugriff auf die dB funktioniert einwandfrei. Hier mal mein Skript: Sub Main() Dim wstemp As Workspace Dim dbtemp As Database Dim rstemp As Recordset Dim myquery As String Dim howmany As Variant Dim Zaehler As Variant Dim combo1 As Variant Dim Anschlussstellevon As String Dim Anschlussstellebis As String Dim Autobahn As String Dim AbfrageAutobahnabfahrt As String Dim AbfrageAutobahnabschnitt As String Dim AnschlussstellenBayernID(1000) As String Dim Anschlusstellennummer(1000) As String Dim AnschlussstellenDistrict(1000) As String Dim AnschlussstellenName(1000) As String Dim Ergebnis(100) As String Dim x As Integer Dim ListeAutobahnabfahrt(1000) As Autobahnabfahrt 'myquery = "select MOTORWAY_ENTRANCE_ID,MOTORWAY_ENTRANCE_NO,NAME,DISTRICT_ID from MOTORWAY_ENTRANCE where DISTRICT_ID LIKE '09%' AND VERSION_NO = '0' AND Version_END IS NULL" 'MsgBox myquery Set wstemp = DBEngine.Workspaces(0) Set dbtemp = wstemp.OpenDatabase("", False, false, "ODBC;DSN=xxx;USR=xxx;PWD=xxx") Set rstemp = dbtemp.OpenRecordset(myquery, dbOpenDynaset, dbSQLPassThrough) howmany = 0 Do Until rstemp.EOF 'MsgBox rstemp(0) AnschlussstellenBayernID(howmany) = rstemp(0) rstemp.MoveNext howmany = howmany + 1 Loop Zaehler = 0 For Zaehler = 0 To howmany - 1 'MsgBox AnschlussstellenBayernID(Zaehler) Next Ich bin soweit, das ich einzelner Werte in einen array einschreiben kann. Da ich ja aber die Werte vergleichen muß, muß ich jetzt einen Weg finden, mit dem ich die Werte vergleichen kann. Gruß Jan von Sassen Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 14. August 2008 Melden Teilen Geschrieben 14. August 2008 Moin, wie gesagt, ein eleganter Weg ist ein lokales Recordset. Vielleicht ist es für dich aber auch noch einfacher, wenn du einfach nur die Werte aus der Datenbank ausliest, die dich interessieren. Je nachdem, was du dann mit den Daten vorhast, sparst du dir dann das Zwischenspeichern. Die Datenbank erledigt das Filtern in jedem Fall effizienter. Gruß, Nils Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 14. August 2008 Melden Teilen Geschrieben 14. August 2008 Du benutzt ja bereit eh Recordsets Set rstemp = dbtemp.OpenRecordset(myquery, dbOpenDynaset, dbSQLPassThrough) Daher wäre auch mein Vorschlag, gleich entspr. Query's zu definieren. Für dein obiges Beispiel z.B. in die WHERE-Klausel noch ein MOTORWAY_ENTRANCE_NO Between 20 AND 50 Zum Thema Arrays: Folgendes wäre z.B. denkbar Mit einem DIM varMeinArr(1000,10) z.B. ein zweidimensionales Array definieren Dann die erste Dimension z.B. für die Zeile und die zweite Dimension für das Feld. Angenommen du nimmst in der 2.Dim. die 1 für das Feld ..ENTRANCE_NO und die 2 für NAME könnte eine Schleife so aussehen: for i = 0 to varZeilen if varMeinArr(i,1) >=20 and varMeinArr(i,1) <=50 then ' aus varMeinArr(i,2) nun den Namen auslesen... end if next Zitieren Link zu diesem Kommentar
jan von sassen 10 Geschrieben 15. August 2008 Autor Melden Teilen Geschrieben 15. August 2008 Moin NilsK, Moin, wie gesagt, ein eleganter Weg ist ein lokales Recordset. Vielleicht ist es für dich aber auch noch einfacher, wenn du einfach nur die Werte aus der Datenbank ausliest, die dich interessieren. Je nachdem, was du dann mit den Daten vorhast, sparst du dir dann das Zwischenspeichern. Die Datenbank erledigt das Filtern in jedem Fall effizienter. Gruß, Nils die beschriebene Suche ist der erste Schritt. Im nächsten Schritt muss ich mit dem so rausgefunden District_ID's wieder in der Datenbank nach Einträgen suchen, die dem Distict_ID zugeordnet sind. Gruß Jan – Moin Cybquest, vielen Dank für den Ansatz, werde das gleich mal ausprobieren. Gruß Jan Du benutzt ja bereit eh Recordsets Daher wäre auch mein Vorschlag, gleich entspr. Query's zu definieren. Für dein obiges Beispiel z.B. in die WHERE-Klausel noch ein MOTORWAY_ENTRANCE_NO Between 20 AND 50 Zum Thema Arrays: Folgendes wäre z.B. denkbar Mit einem DIM varMeinArr(1000,10) z.B. ein zweidimensionales Array definieren Dann die erste Dimension z.B. für die Zeile und die zweite Dimension für das Feld. Angenommen du nimmst in der 2.Dim. die 1 für das Feld ..ENTRANCE_NO und die 2 für NAME könnte eine Schleife so aussehen: for i = 0 to varZeilen if varMeinArr(i,1) >=20 and varMeinArr(i,1) <=50 then ' aus varMeinArr(i,2) nun den Namen auslesen... end if next Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 16. August 2008 Melden Teilen Geschrieben 16. August 2008 Moin, die beschriebene Suche ist der erste Schritt. Im nächsten Schritt muss ich mit dem so rausgefunden District_ID's wieder in der Datenbank nach Einträgen suchen, die dem Distict_ID zugeordnet sind. das hört sich für mich so an, als wärest du mit einer SQL-Query mit JOIN am besten bedient. Lass doch die Datenbank die Arbeit machen, dafür ist sie ja da. Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.