Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
GetRows Methode, was mach ich falsch?
Gehe zu Seite 1, 2  Weiter
zurück: FindFirst Frage weiter: Wenn Feld leer, dann ... Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
xyceat
Gast


Verfasst am:
05. März 2007, 12:35
Rufname:

GetRows Methode, was mach ich falsch? - GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Hi,

ich möchte eine Spalte aus einem Recordset in ein Array schreiben.
Hab die Variable ArAy als Variant definiert und das Recordset entsprechend geöffnet.
Jedoch stürzt mir der source in der GetRows Zeile immer ab, was mach ich falsch?
Code:
Function Materialnummer_raussuchen(ByVal strKriterium As String) As Variant
'Mit der erstellten Filterklausal (strKriterium bzw. .GetCriteria) müssen nun
'aus einem Recordset die Materialnummer (Primärschlüssel) ausgelesen werden
    Dim conn As ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strKriteriumSub As String
    Dim cnt As Integer
    Dim ArAy As Variant
   
    'Öffnen des Recordsets
    Set conn = CurrentProject.Connection
    rst.Open "Vorgänge", conn
    'Recordset filtern
    rst.Filter = strKriteriumSub
    'Array Feldvariable füllen
    ArAy = Recordset.GetRows(, , MaterialID)
Nouba
nicht ganz unwissend :)


Verfasst am:
05. März 2007, 12:51
Rufname:
Wohnort: Berlin


AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Hallo,

versuche es einmal mit diesem Ansatz.

Code:
Function Materialnummer_raussuchen(ByVal strKriterium As String) As Variant
'Mit der erstellten Filterklausal (strKriterium bzw. .GetCriteria) müssen nun
'aus einem Recordset die Materialnummer (Primrschlüssel) ausgelesen werden
  Dim rst           As New ADODB.Recordset
  Dim ArAy          As Variant

  'Öffnen des Recordsets
  rst.Open "Vorgänge", CurrentProject.Connection
  'Recordset filtern
  rst.Filter = strKriterium
  'Array Feldvariable füllen
  ArAy = rst.GetRows(, , MaterialID)
  '...
End Function

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. März 2007, 12:52
Rufname:
Wohnort: Berlin

AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

So sollte es funktionieren:
Code:
    ArAy = rst.GetRows(, , "MaterialID")

_________________
mfg Rita

Antworten bitte hier im Forum, nicht als private Nachricht. Danke
Gast



Verfasst am:
05. März 2007, 13:03
Rufname:

AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Danke für eure schnelle HIlfe, ja damit gehts.

bin auch ein depp das ich recordset nehme und net rst Embarassed

Aber hab scho wieder eine neues Problem, will die Variable jetzt ausgeben im Direktfenster. Code sieht so aus:
Code:
    Dim lng As Long
   
    For lng = 0 To UBound(ArAy)
        Debug.Print lng; " "; ArAy(lng)
    Next lng
er hängt sich in der Debug.Print zeile auf Sad
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. März 2007, 13:14
Rufname:
Wohnort: Berlin


AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Ich weiß ja nicht, wie viele Datensätze Deine Tabelle hat...
Vielleicht solltest Du vorher
Code:
Debug.Print UBound(ArAy)
ausgeben.

oder Du versuchst es so:
Code:
    Dim lng As Long
   
    For lng = LBound(ArAy) To UBound(ArAy)
        Debug.Print lng; " "; ArAy(lng)
    Next lng
Ich kann mir nämlich nie merken, ob standardmäßig mit 0 oder 1 begonnen wird.
_________________
mfg Rita

Antworten bitte hier im Forum, nicht als private Nachricht. Danke
Nouba
nicht ganz unwissend :)


Verfasst am:
05. März 2007, 13:17
Rufname:
Wohnort: Berlin

AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Hallo,

Du hast ein zweidimensionales Datenfeld vorliegen.

Code:
  For lng = 0 To UBound(ArAy, 2)
    Debug.Print lng; " "; ArAy(0, lng)
  Next lng

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
xyceat
Gast


Verfasst am:
05. März 2007, 15:50
Rufname:

Daten aus Recordset in eindimensionales Array schreiben - Daten aus Recordset in eindimensionales Array schreiben

Nach oben
       Version: Office 2003

xyceat am 05. März 2007 um 13:08 hat folgendes geschrieben:
Hi,

wieso ein 2 Dimensionales ?
Wenn ich nur eine Spalte nehm, müsst es doch eindimensional sein, oder?

Ich bräuchte die Feldvariable in der Form das ich sie dafür hernehmen kann:
Formular nach Feldvaribale filtern?
Da hast du mir auch scho geantwortet Nouba ;)
{Themen zusammengefuehrt by Willi Wipp}

Hi,

also ich will eine Tabelle in nem Recordset öffnen, diese dann filtern und dann eine Spalte, die den Primärschlüssel enthält, in ein Array schreiben.

Wenn ich nach dem Filtern einen Debugprint machen lass, dann stimmt soweit alles. Nur das Arrayschreiben macht mir Schwierigkeiten. vllt sieht jemand den/die Fehler?
Das komische ist: Sobald ich die Schleife einbaue bricht er in der Zeile ab wo ich den Filter gesetzt habe. Und behauptet:
Zitat:
Arguments are of the wrong type, are out oof acceptable ragen, or are in conflict with one other.
Ich weiß das ich auch "getrows" nehmen könnte, aber mit der Methode komm ich nicht wirklich zurecht, mir wär die Schleife lieber, wenns geht.
Code:
Function MaterialGefiltert(ByVal strKriterium As String) As Variant
'Mit der erstellten Filterklausal (strKriterium bzw. .GetCriteria) müssen nun
'aus einem Recordset die Materialnummer (Primärschlüssel) ausgelesen werden
    Dim conn As ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strKriteriumSub As String
    Dim cnt As Integer
    Dim lng As Long
   
    'Öffnen des Recordsets
    Set conn = CurrentProject.Connection
    rst.Open "Vorgänge", conn
    'Erstellte Kriterium enthält den Fehler das " und nicht ' verwendet werden
    'Diese müssen ersetzt werden, darum sollten auch keine " in den Datenbank
    'verwendet werden
    strKriteriumSub = Replace(strKriterium, Chr(34), Chr(39))
    'Recordset filtern
    rst.Filter = strKriteriumSub
    rst.MoveFirst
    If rst.EOF = True Then
        MsgBox "Mit diesen Filter Einstellungen sind keine Daten vorhanden. "
      Else
        cnt = 0
        Do Until rst.EOF
            MaterialGefiltert(cnt) = rst("MaterialID")
            cnt = cnt + 1
            'Debug.Print rst("MaterialID")
            rst.MoveNext
        Loop
    'End If
    'Anzeige der auszugebenen MaterialIDs im Direktfenster für Debugging
    For lng = 0 To UBound(MaterialGefiltert)
        Debug.Print lng; " "; MaterialGefiltert(lng)
    Next lng
    'Closen des recordsets
    rst.Close
End Function
Willi Wipp
Moderator


Verfasst am:
05. März 2007, 17:33
Rufname:
Wohnort: Raum Wiesbaden

Re: GetRows Methode, was mach ich falsch? - Re: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Willi Wipp am 05. März 2007 um 15:28 hat folgendes geschrieben:
Hi xyceat,

das ist "egal" wieviele Felder (Spalten) Du auswaehlst. Es wird immer 2 dimensional.
Die 2. Dimension ist fuer die verschiedenen Felder (Spalten) gedacht.
Wenn Du nur ein Feld verwendest, dann gibt es halt nur die eine "Spalte" mit dem Index 0.

Hi xyceat,

es waere klasse wenn Du bei einem Thema bleiben koenntest.
Das macht so nur unnoetige Arbeit
und frustiert die Leute die die Frage zum zweiten oder dritten Mal beantwortet haben!
Fragen zum gleichen Thema, kann man auch an ein bestehendes Thema anhaengen.
Das erleichtert es Anderen dem Loesungsweg zu folgen!
Was willst Du denn nun eigentlich am Ende damit erreichen?
Warum ist das End If auskommentiert?

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 06. März 2007, 01:44, insgesamt einmal bearbeitet
Nouba
nicht ganz unwissend :)


Verfasst am:
06. März 2007, 00:51
Rufname:
Wohnort: Berlin

AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Hallo,

für Deinen Wunsch solltest Du die GetString-Methode (siehe OL-Hilfe) des ADO-Recordsets verwenden.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
xyceat
Gast


Verfasst am:
06. März 2007, 10:52
Rufname:

AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

@ Willi.
Sorry mit dem Themasprung. Es ist einfach alles miteinander verknüpft.
Ich will folgendes machen:

Eine Tabelle in ein recordset laden. Dieses Recordset filtern nach bestimmten Kriterien. Aus dem gefilterten Recordset die MaterialID (Primärschlüssel) in ein Array schreiben. Und dann dieses Array an ein Formular übergeben, dass dieses nur die Datensätze anzeigt, die im Array stehen.

Das recordset erstellt und gefiltert hab ich schon.
Jetzt muss ich das zeug einfach nur noch in ein Eindimensionales Array bringen, damit ich es wie im oben von mir verlinkten Thread verarbeiten kann.

Zum ausgeklammerten End if. Das war nen Fehler beim posten, das war net auskommentiert.
Hatte nur einiges zum versuchen auskommentiert und dann im post vergessen das end if wieder reinzuholen.

@Nouba

Danke für den Tip, ich probiers mal damit!

Nochmal zu meinem Quelltext oben, ist die Schleife eigentlich komplett falsch? Also geht da überhaupt das ich die Varibal cnt hochzählen lasse und die dann als Feldindex nehme?

Gruß

Stefan
KlausMz
Moderator Access


Verfasst am:
06. März 2007, 11:00
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Hallo,
Zitat:
Eine Tabelle in ein recordset laden. Dieses Recordset filtern nach bestimmten Kriterien. Aus dem gefilterten Recordset die MaterialID (Primärschlüssel) in ein Array schreiben. Und dann dieses Array an ein Formular übergeben, dass dieses nur die Datensätze anzeigt, die im Array stehen.
Der Sinn eines Array erschließt sich mir hier aber überhaupt nicht.
Warum den Umweg über eine Array. Den Filter für das Recordset kannst Du doch auch im Formular verwenden. Dann hast Du gleich die richtigen Datensätze im Formular.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.


Zuletzt bearbeitet von KlausMz am 06. März 2007, 18:52, insgesamt einmal bearbeitet
xyceat
Gast


Verfasst am:
06. März 2007, 11:36
Rufname:

AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Ja, das Problem ist etwas komplizierter ^^

Und zwar ich hab eine relationale Datenbank die folgendermasen (vereinfacht) aufgebaut ist:
Ich habe unterschiedliche Materialien zu denen Kopfdaten gehören. Die Materialnummern sind Alphanumerisch und sind zugleich der Primärschlüssel. Kopfdaten und Materialnummern stehen in der "Mastertabelle". Zugeordnet sind jedem Material Verarbeitungsschritte. Nun kann jedes Material unterschiedlich viele Bearbeitungsschritte haben. Also 1:n Beziehung.

Nun möchte ich eine Suchfunktion haben die in beiden TAbellen suchen kann. Aber ich hab keine Suchfunktion gefunden, die in verknüpften Tabellen suchen kann. Also hab ich beide Tabelle in eine Abfrage reingepackt.

In diesem kann ich jetzt filtern wie ich möchte. Jedoch kommen die Kopfdaten so oft vor, wieviele Bearbeitungsschritte eben dazugehören.
Das ist dumm, denn wenn ich nach einer Materialnummer suche, wird mir der eine Datensatz in einem Formular x mal angezeigt. Das will ich nicht.

Also dacht ihc mir, ich lass die Abfrage in ein recordset schreiben und filter im recordset. Dann lass ich alle Materialnummern in ein Array schreiben. Filter aus dem Array die xfach vorkommenden raus und übergebe die Materialnummern dem Formular, das als Datenherkunft nicht die Abfrage sondern die orginale relationale Datenbank hat.

Oder geht das alles viel einfacher ?
Willi Wipp
Moderator


Verfasst am:
06. März 2007, 15:31
Rufname:
Wohnort: Raum Wiesbaden

Re: GetRows Methode, was mach ich falsch? (II) - Re: GetRows Methode, was mach ich falsch? (II)

Nach oben
       Version: Office 2003

Hi xyceat,

und warum dann nicht einfach in der Datenherkunft
Code:
SELECT ...
FROM   ...
WHERE  MaterialID In (SELECT MaterialID
                      FROM   Vorgänge)

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
xyceat
Gast


Verfasst am:
06. März 2007, 16:23
Rufname:

AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Hm, versteh ich jetzt net ganz wie das gehen soll.

Die Abfrage Vorgänge enthält ja keine Filterbedingungen, sondern dient mir nur als Tabelle in der ich nach allen wünschenswerten Daten suchen kann.
Die Filterfunktion läuft bis jetzt über ein Suchformular, dass ich ausm inet habe. In das gibt man nur ein nach was man sucht und in welche Spalte und das stellt eben die fertige Filterbedingun dann zu Verfügung.

Wenn ichs machen will wie du sagst, dann muss ich diesen Filterbefehl einer neuen Abfrage übergeben, oder?
Wird aber auch net wirklich einfach denk ich.

Vorallem ich hab das mit dem recordset gleich geschafft.
Habs mittlerweilen geschafft das ers in ein array schreibt usw.

nun hängts nur noch an der Sache aus dem anderen Thread:
Code:
    Feldvariable = MaterialGefiltert(strKriterium)
    Me.Filter = "MaterialID In (" & Join(Feldvariable, ",") & ")"
    Me.OrderBy = .GetOrderBy
    Me.FilterOn = True
    Me.OrderByOn = True
<tt>Me.Filter = "MaterialID In (" & Join(Feldvariable, ",") & ")"</tt> funzt eigentlich soweit,
jedoch kann das Formular rein gar nix mit "MaterialID in (xxx)" anfangen. Habs scho manuell probiert einzutragen und bißchen rumprobiert, aber er nimmts überhaupt net an als filter. formular bleibt komplett leer.
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
06. März 2007, 17:03
Rufname:
Wohnort: Berlin


AW: GetRows Methode, was mach ich falsch? - AW: GetRows Methode, was mach ich falsch?

Nach oben
       Version: Office 2003

Gibt denn die Funktion MaterialGefiltert() das richtige Array zurück? Ich verstehe nur nicht ganz, warum Du lieber eine komplizierte Funktion verwendest, anstatt getrows zu verwenden.

Versuchs doch mal so:
Code:
    Me.Filter = "MaterialID In (" & Join(MaterialGefiltert(strKriterium), _
                                         ",") & ")"

_________________
mfg Rita

Antworten bitte hier im Forum, nicht als private Nachricht. Danke
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: SQL aus Abfrage in VBA übernehmen | Was mache ich falsch? 6 Gast 87 11. Jan 2014, 16:20
Gast SQL aus Abfrage in VBA übernehmen | Was mache ich falsch?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mit Paramter "Ist nicht Null" --> Synta 5 CA_Mo 91 20. Aug 2013, 10:49
Blackpit2013 Abfrage mit Paramter "Ist nicht Null" --> Synta
Keine neuen Beiträge Access Tabellen & Abfragen: Summe von Zeitfeld falsch 2 cloullin 203 30. Sep 2012, 16:51
cloullin Summe von Zeitfeld falsch
Keine neuen Beiträge Access Tabellen & Abfragen: Zeitmessung Berechnung falsch? 15 wimmera 805 11. März 2012, 10:28
wimmera Zeitmessung Berechnung falsch?
Keine neuen Beiträge Access Tabellen & Abfragen: DateDiff mit Kriterien wertet Falsch aus! HILFE 4 kruemel230286 699 29. Sep 2011, 15:11
kruemel230286 DateDiff mit Kriterien wertet Falsch aus! HILFE
Keine neuen Beiträge Access Tabellen & Abfragen: Was mache ich Falsch 10 Siard-ludewig 504 13. Jan 2011, 16:17
Siard-ludewig Was mache ich Falsch
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mit "Wenn-dann-Formel" - Was mache ich fal 2 Access-Dummie 288 17. März 2010, 09:28
Access-Dummie Abfrage mit "Wenn-dann-Formel" - Was mache ich fal
Keine neuen Beiträge Access Tabellen & Abfragen: Fehler 3061 bei Update mit CurrentDB.EXECUTE Methode 4 Chaoslord74 1917 28. Jan 2010, 22:39
Chaoslord74 Fehler 3061 bei Update mit CurrentDB.EXECUTE Methode
Keine neuen Beiträge Access Tabellen & Abfragen: aus 3 mach 1 6 Heavy-Dee 302 23. Nov 2009, 02:57
Willi Wipp aus 3 mach 1
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage ungleich andere Tabelle, was mache ich falsch? 4 Marie_22 1831 26. Okt 2009, 13:46
Marie_22 Abfrage ungleich andere Tabelle, was mache ich falsch?
Keine neuen Beiträge Access Tabellen & Abfragen: Dieser Ausdruck wurde falsch eingegeben oder ist zu komlex 4 Flomox 896 13. März 2008, 11:32
Tom2002 Dieser Ausdruck wurde falsch eingegeben oder ist zu komlex
Keine neuen Beiträge Access Tabellen & Abfragen: Mittelwert in PivotChart wird falsch berechnet 0 Accessler 592 13. Feb 2008, 12:02
Accessler Mittelwert in PivotChart wird falsch berechnet
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel Tricks