ADOCE 3.1 Select Max ADOCE 3.1 Select Max
Ergebnis 1 bis 8 von 8
  1. Ich habe da ein kleines Problem. Da cdb keinen PrimaryKey unterstütz, muess ich wohl oder übel selber eine Funktion schreiben für das.

    Nun möchte ich aus einer TabellenSpalte die grösste Nummer ausfindig machen. In SQL geht das ja mit SELECT MAX. Wiess jemand ob das mit ADOCE 3.1 möglich ist?

    Danke
    0
     

  2. also jetzt gibt mal ein DB-Dummy ne antwort Ev. habe ich sogar Glück und ich erzähle hier eine Geschichte die etwas Wahrheit hat...

    Könntest du nicht zuerst sortieren und dann den ersten Datensatz nehmen? Das wäre ja dann der höchste... je nach dem nach was du sortierst...

    So habe ich es zumindest auch schon gemacht... glaube ich zumindest

    gruss marco
    0
     

  3. Hmm. Wie das auch so ist. Man sucht immer viel zu weit.

    Danke schön.

    Übrigens habe ich in zwischenzeit rausgefunden, dass es gar keine SELECT MAX() Funktion mit ADOCE 3.1 gibt.
    Im eVB unter Hilfe -> Contents -> Microsoft eMbedded Visual Basic 3.0 -> ADOCE 3.0 -> SQL Reference ist die auf jeden Fall nicht drin. Und ich glaube nicht, dass die bei einem Versionwechsel von 0.1 eine ganze Funktion hinzufügen. Das wäre irgend wie M$ atypisch.

    Danke auf jeden fall für den Lösungsansatz.
    0
     

  4. Also ich hab das mal so gelöst:
    Code:
    Private Function PrimaryKey() As Integer
        Dim PK As Integer
            
        If connOpen = True Then
            MsgBox "ConnOpen"
            Set rs = CreateObject("ADOCE.Recordset.3.1")
            rs.Open "SELECT PKID_lnd FROM tblLnd ORDER BY PKID_lnd", conn, adOpenForwardOnly, adLockReadOnly
            
            rs.MoveLast
            
            PK = rs(0).Value
        Else
            MsgBox "ConnClosed"
        End If
        
    End Function
    Die Funktion wird folgendermassen aufgerufen
    Code:
    Private Sub Command1_Click()
        MsgBox PrimaryKey
    End Sub
    Nur leider zeigt mir die MsgBox keinen Wert an. Wie kann ich den Wert von PK aus der Funktion PrimaryKey in die Sub Command1_Click() zurück geben?

    Danke
    0
     

  5. VERGESST DAS GANZE. Ich glaub ich hatte den Kopf nicht so ganz bei der Sache.
    Hat sich erledigt.
    0
     

  6. hehe super wie sich die Probleme lösen

    viel spass weiterhin
    0
     

  7. Aber da ist ja eine neue Frage aufgetaucht:
    Nur leider zeigt mir die MsgBox keinen Wert an. Wie kann ich den Wert von PK aus der Funktion PrimaryKey in die Sub Command1_Click() zurück geben?
    Damit eine Funktion einen Wert zurückliefert muss der Wert dem Funktionsnamen zugewiesen werden, das würde dann so aussehen

    Code:
    Private Function PrimaryKey() As Integer 
    
        If connOpen = True Then 
            Set rs = CreateObject("ADOCE.Recordset.3.1") 
            rs.Open "SELECT PKID_lnd FROM tblLnd ORDER BY PKID_lnd", conn, adOpenForwardOnly, adLockReadOnly 
            
            rs.MoveLast 
            
            PrimaryKey = rs(0).Value 
        Else 
            PrimaryKey = -32768 
        End If 
        
    End Function
    Msgbox habe ich rausgenommen, denn die stören nur, aber dafür als Fehlercode -32768, der negativste Interger der möglich ist.

    Möglicherweise wäre folgendes etwas schneller, statt:

    Code:
            rs.Open "SELECT PKID_lnd FROM tblLnd ORDER BY PKID_lnd", conn, adOpenForwardOnly, adLockReadOnly 
            rs.MoveLast
    das:
    Code:
            rs.Open "SELECT PKID_lnd FROM tblLnd ORDER BY PKID_lnd Desc", conn, adOpenForwardOnly, adLockReadOnly
    (Sortierung umgekehrt)

    Kleine Anmerkung: ich habe noch nie für den PocketPC programmiert, aber so würde ich das machen mit VBA machen.
    0
     

  8. Code:
    rs.Open "SELECT PKID_lnd FROM tblLnd ORDER BY PKID_lnd Desc", conn, adOpenForwardOnly, adLockReadOnly
    Das scheint mir die besser lösung zu sein als die welche ich hatte. Danke.

    Hier http://www.pocketpc.ch/viewtopic.php?t=6047 kannst du mal schauen was ich bis jetzt gemacht habe.
    0