2016-11-24 1 views
0

Ich habe eine Access-Datenbank mit einigen Produkten. Sie wurden nach Produktreferenz gruppiert. Zusätzlich gibt es zwei Spalten, die die Anzahl der Farbvariationen und Größen für jede Referenz zählen.Access> Case für multiple Felder

Also habe ich die Felder [refID], bekam [Farben] und [Größen]

Jetzt möchte ich diese Informationen verwenden, um einige Fälle zu berechnen, die später praktisch werden wird. Und da brauche ich Hilfe. Ich bin immer noch ein Anfänger, aber ich dachte darüber nach so etwas wie:

Public Function variantCase() As Integer 

[sizes] = sizes 
[colors] = colors 

    Select Case Variante 
     Case sizes > 0 And colors < 1 
      variant = 1 
     Case sizes > 0 And colors > 1 
      variant = 2 
    End Select 
End Function 

Bitte beachten Sie, dass diese beiden Fälle sind nur Beispiele. Es wird min. 7 mehr.

Aber das scheint noch nicht zu funktionieren. Können Sie mir helfen? (:

Oh, und wenn Sie mehr Informationen benötigen, sprechen Sie uns bitte

Dank


UPDATE:.!

Es ist schon eine Weile, aber ich brauche noch etwas Hilfe. Was ich so weit ist:

Public Function containerVariant() 

    Dim db As DAO.Database 
    Dim rs As DAO.Recordset 

    Set db = Application.CurrentDb 
    Set rs = db.OpenRecordset("MyTable") 

    Dim NumberOfSizes As String 
    Dim NumberOfColors As String 
    Dim Variant As String 

Select Case NumberOfSizes 
     Case Is > 0 
      Select Case NumberOfColors 
       Case Is < 0 
        Variant = 1 
       Case Is > 0 
        Variant = 2 
      End Select 

     Case Else 
      Variant = 9 
End Select 

End Function 

wenigstens bekomme ich keine Fehler-mes Salbei, aber das scheint nichts zu tun. Ich habe die Funktion in Access SQL eingebettet, aber alle Felder meiner neuen Variant-Spalte sind noch leer. Also, was muss ich hinzufügen/ändern, um das Ergebnis in meiner Access Table zu sehen?

Antwort

0

Wie wäre es mit dem Erstellen einer Ansicht?

create view v_products as 
    select p.*, 
      iif(sizes > 0 And colors < 1, 1, 
       iif(sizes > 0 And colors > 1, 2, NULL)) as variant 
    from products as p; 

Dann greifen Sie einfach die Ansicht, die die Pseudo-Spalte variant zu erhalten.

+0

Hmmm, ich sollte sagen, diese beiden Fälle sind nur Beispiele. Es wird mindestens 7 mehr geben. Und ich dachte, es könnte einfacher sein, mit Fällen umzugehen. – Manisch

+0

@Manisch. . . Eine Möglichkeit besteht darin, die Ausdrücke 'iif()' zu verschachteln. Eine Alternative ist die 'switch' Funktion (https://www.techonthenet.com/access/functions/advanced/switch.php). –

0

Sie möchten vielleicht verschachtelte CASE-Anweisungen ausprobieren? Die Art und Weise, wie Sie gezeigt haben, ist NICHT nach einer einzelnen Variablen zu suchen, was meiner Meinung nach CASE funktioniert.

Select Case Sizes 
     Case > 0 
      Select case colors 
       Case is < 0 
        variant = 1 
       Case is > 0 
        variant = 2 
      End Select 

     Case ELSE 
      ' etc, etc, etc 
End Select 
+0

Ich bin mir nicht sicher, ob ich Ihre Lösung verstehe. Wo wird die Anzahl der "Größen" genannt? – Manisch

+0

Ah, tut mir leid, egal, ich denke jetzt bekomme ich es: D – Manisch

+0

Ich denke, ich muss noch eine einfache Sache fragen: Wie rufe ich tatsächlich die Access-Spalten in VBA? Es scheint, als würde ich immer noch etwas falsch machen. Die Spalten heißen "NumberofSIZE" und "NumberofCOLOR". Oder mit anderen Worten: Wie soll das komplette Setup aussehen? – Manisch