Newsgroup: it.comp.appl.access
Titolo: Problema con inserimento record

Ho una maschera che mi evidenzia i dati anagrafici del cliente.
Una sottomaschera che utilizzo per creare l'offerta al cliente, quindi
contiene le specifiche degli articoli.
La subform è composta da:
Idcontatore
SpecificheArticolo
CodiceArticolo
CostoArticolo
Ricarica
Il mio problema è che nel caso riprenda l'offerta in seguito, non riesco ad
inserire un record ad esempio tra il contatore 4 e il contatore 5. Ho la
necessità di farlo per dare un certo ordine di presentazione in quanto in
stampa le SpecificheArticolo devono stare insieme.
Ho saputo che si potrebbe fare una query di aggiornamento da codice, ma
nonostante abbia letto l'help, non riesco assolutamente a venirci fuori.
Se qualcuno potesse darmi una mano, anche con esempi, ve ne sarei grato.
Ciao Mauro

 ha scritto nel messaggio
news:nWjl7.4504$kt4.1...@news.infostrada.it...

Impossibile con il formato Contatore.
Potresti aggiungere un campo di tipo numerico alla tabella e chiamarlo
"Ordine".In questo campo metti l'ordine di visualizzazione e, utilizzalo
nella query, impostando a Crescente l'Ordinamento.
In condizioni normali il campo Ordine viene riempito con il valore di
Contatore in modo automatico (scrivi due righe di codice).
Qualora a distanza di giorni vuoi inserire un articolo in mezzo agli altri,
potresti usare la routine che ho scritto per te:
Per comodità l'ho inserita su dopo aggiornamento del controllo "Ordine".
Private Sub Ordine_AfterUpdate()
    Dim NuovoRec As Integer
    Dim UltimoOrdinamento As Integer, UltimoID As Long, AltroID As Long
    Dim MiaSQL As String
    NuovoRec = Me.NewRecord
    UltimoOrdinamento = Nz(DMax("Ordine", "tblCLIENTI"), 0)
    UltimoID = Nz(DLookup("IDAzienda", "tblCLIENTI", "Ordine = " &
UltimoOrdinamento), 0)
    If NuovoRec = True Then 'è un nuovo record
            If Me.Ordine > UltimoOrdinamento Then
                Exit Sub 'il numero è successivo
            Else
                Select Case Me.Ordine
                    Case Is = UltimoOrdinamento
                    MiaSQL = "UPDATE tblCLIENTI SET tblCLIENTI.Ordine = " &
Forms![MTabellaA]![SQClienti].Form![Ordine] + 1 & " WHERE
(((tblCLIENTI.IDAzienda) = " & UltimoID & ")) WITH OWNERACCESS OPTION;"
                    DoCmd.RunSQL MiaSQL
                    Me.Ordine = UltimoOrdinamento
                    Forms![MTabellaA]![SQClienti].Form.Requery
                    Case Is < UltimoOrdinamento
                    AltroID = DLookup("IDAzienda", "tblClienti", "Ordine =
Forms![MTabellaA]![SQClienti].Form![Ordine]")
                    MiaSQL = "UPDATE tblCLIENTI SET tblCLIENTI.Ordine = " &
Forms![MTabellaA]![SQClienti].Form![Ordine] + 1 & " WHERE
(((tblCLIENTI.IDAzienda) = " & AltroID & ")) WITH OWNERACCESS OPTION;"
                    DoCmd.RunSQL MiaSQL
                    Dim i
                    For i = Forms![MTabellaA]![SQClienti].Form![Ordine] + 1
To DCount("IDAzienda", "tblCLIENTI")
                    MiaSQL = "UPDATE tblCLIENTI SET tblCLIENTI.Ordine = " &
i + 1 & " WHERE (((tblCLIENTI.IDAzienda) = " & i & ")) WITH OWNERACCESS
OPTION;"
                    DoCmd.RunSQL MiaSQL
                    Next i
                    Me.Ordine = Me.Ordine
                    Forms![MTabellaA]![SQClienti].Form.Requery
                End Select
            End If
    Else
    End If
End Sub
L'ho provata e funziona. Dovrai cambiare opportunamente i nome delle tabelle
e dei campi. E' prevista una chiave primaria nella tabella da modificare e
un campo denominato "Ordine". Qualora inserisci un nuovo articolo, la sub
parte dopo che avrai digitato quale numero di ordinamento preferisci.
Fammi sapere. Se va bene la propongo al sito comune.
Ciao, Carlo



La procedura l'ho inserita su clic di un pulsante.
Ho modificato il campo contatore, facendolo diventare numerico (Ho inserito
nella casella di testo, "Valore Predefinito", la funzione
Dmax("[IdContatore]","[Tabella2]")+1. Il campo è una chiave primaria con
duplicati non ammessi.
La chiave primaria della tabella che tu chiami IDAzienda, per me è un valore
String e non Long.
Ho modificato allora le dim di UltimoID e AltroID in String, ma non
funziona.
Praticamente non succede niente alla pressione del pulsante.
Siccome non sono afferrato sul codice, mi potresti spiegare che cosa
sbaglio?
Ciao e grazie
Mauro