Newsgroup: it.comp.appl.access
Titolo: Trasformare stringa di codice SQL in VBA

Partendo da un esempio trovato sul sito comune ho scritto questo codice nel
proprietà "valore predefinito" del controllo "id_imm" della maschera
"frmNodo"
="K" & Format(Date();"aaaa") & "/" &
Format(IIf(IsNull(DMax("[id_imm]";"[zsNodo]";"[id_imm] like 'K" &
Format(Date();"aaaa") &
"/????'"));1;Right(DMax("[id_imm]";"[zsNodo]";"[id_imm] like 'K" &
Format(Date();"aaaa") & "/????'");4)+1);"0000")
Il risultato che mi da è scrivere un ID che ha questa forma K2003/0001 che
si autoincrementa ad ogni nuovo record inserito.
Poi ho la maschera CreaImmobili dove ho un controllo "Nimm" in cui viene
scritto il numero di immobili da creare e un pusante dietro cui ho scritto
    DoCmd.OpenForm "frmNodo", acNormal, , , acFormAdd ', acHidden
    DoCmd.GoToRecord acDataForm, "frmNodo", acLast
    Dim num As Integer
    Dim titolo As String
    Dim testo As String
   For num = 1 To Me.Nimm
        DoCmd.GoToRecord acDataForm, "frmNodo", acNewRec
        Forms.frmNodo.id_comm = Me.id_comm
        Forms.frmNodo.id_ImmRel = num
        Forms.frmNodo.id_stato = 1
    Next num
Il codice funziona bene
Ora però per Nuove Esigenze di gestione del db mi servirebbe cambiare un po'
le cose e inserire nella maschera CreaImmobile un controllo che chiamerò
"ultimo" in cui scrivo l'ultimo ID usato (o quantomeno l'ultima parte
dell'id "0001")
e poi dorvrei fare in modo di scrivere il codice riportato in testa al
messaggio, all'interno del ciclo For Next
é possibile? e come si fa? io non riesco a trasformarlo in modo corretto!
...non riesco neppure a dirgli che la data me la deve scrivere in formato
solo anno "aaaa"
Cercasi aiuto diperatamente Grazie (ne va delle mie ferie!!!!)

Sono riuscita a scrivere il codice che mi serviva, forse non č la forma
migliore perņa quanto pare funziona e quindi lo posto nel caso a qualcuno
possa servire
....e poi, finalmente, me ne vado in ferie!
ciao a tutto il NG e grazie per tutto l'aiuto di qs anno!
Nadia
-------
posto che Nimm č il controllo non associato della maschea in cui inserisco
il numero di record da creare e Ultimo č il controllo non associato in cui
inserisco la parte finale dell'ultimo codice usato:
Private Sub cmdNewImm_Click()
On Error GoTo Err_cmdNewImm_Click
    Dim num As Integer
    Dim ultimo As Integer
    Dim titolo As String
    Dim testo As String
    Dim testo2 As String
    titolo = "Creazione Immobili"
    testo = "nella tabella Nodo sono stati creati " & Me.Nimm & " nuovi
record, uno per ogni immobile della commessa"
    testo2 = "nella tabella Immobile sono stati creati " & Me.Nimm & " nuovi
record, uno per ogni immobile della commessa"
    DoCmd.OpenForm "frmNodo", acNormal, , , acFormAdd ', acHidden
    DoCmd.GoToRecord acDataForm, "frmNodo", acLast
    ultimo = Me.ultimo
    For num = 1 To Me.Nimm
        ultimo = ultimo + 1
        DoCmd.GoToRecord acDataForm, "frmNodo", acNewRec
        Forms.frmNodo.id_comm = Me.id_comm
        Forms.frmNodo.id_Imm = "K" & Format(Date, "yyyy") & "_" &
Format(ultimo, "0000")
        Forms.frmNodo.id_ImmRel = num
        Forms.frmNodo.id_stato = 1
    Next num
    MsgBox testo, vbInformation, titolo
    DoCmd.Close
    DoCmd.OpenForm "frmImmobile", acNormal, , , acFormAdd ', acHidden
    DoCmd.GoToRecord acDataForm, "frmImmobile", acLast
    ultimo = Me.ultimo
    For num = 1 To Me.Nimm
        ultimo = ultimo + 1
        DoCmd.GoToRecord acDataForm, "frmImmobile", acNewRec
        Forms.frmImmobile.id_Imm = "K" & Format(Date, "yyyy") & "_" &
Format(ultimo, "0000")
    Next num
    MsgBox testo2, vbInformation, titolo
    DoCmd.Close
Exit_cmdNewImm_Click:
    Exit Sub
Err_cmdNewImm_Click:
    MsgBox Err.Description
    Resume Exit_cmdNewImm_Click
End Sub