Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Access VBA] Function per copiare tabelle

    Sono quì ancora a tentare un aiutino.....
    Ho creato una function per far in modo che dei dati di una tabella passino
    ad un'altra che ha come campi gli stessi.....
    Fin quì tutto ok ed ecco la function:

    Public Function CopiaRecord()
    Dim db As Database
    Dim rst As Recordset, rst1 As Recordset
    Dim ContatoreVolante As Integer
    Set db = CurrentDb
    Set rst = db.OpenRecordset("DettaglioOfferta", dbOpenDynaset)
    Set rst1 = db.OpenRecordset("TabellaTemp", dbOpenDynaset)
    ContatoreVolante = DMax("[Riga]", "[TabellaTemp]") + 3
    rst.MoveFirst
    With rst1
    Do Until rst.EOF
    .AddNew
    rst1!Riga = ContatoreVolante
    rst1!IDOrdini = Forms!Ordini01!IDOrdini
    rst1!IDProdotto = rst!IDProdotto
    .Update
    rst.MoveNext
    ContatoreVolante = ContatoreVolante + 3
    Loop
    End With
    rst.Close: rst1.Close
    Set rst = Nothing
    Set rst1 = Nothing
    Set db = Nothing
    End Function

    Tutto sembra funzionare. Solo che ho 2 problemini:
    1) La tabellaTmp è vuota e serve (come potete intuire dal nome) da
    passaggio. Il primo problema nasce dal fatto che questa tabella ogni volta
    viene cancellata e quindi il valore di ContatoreVolante è Null...dandomi
    sempre errore.
    Non riesco a capire come funziona il dmax da codice....ci sono sempre dei
    cambiamenti. Vorrei fare come da macro questo discorso:

    ContatoreVolante = IIf(IsNull(DMax("[Riga]", "[TabellaTemp]") + 3), 1)
    Solo che mi dà errore: Argomento non facoltativo. Vorrei solo dirgli che se
    lo trova null di impostarlo a 1 ma non ci riesco.

    2) Vorrei sapere se è possibile con il codice far capire alla macchina
    quando fa il .AddNew di selezionare i record in ordine crescente in base ad
    un campo della tabella DettaglioOfferte.

    Scusate se sono stato lungo.....

    P.S. Grazie ancora per il vostro gentile aiuto

    Ultra



    ULTRAREFLEX

  2. #2

    Re: [Access VBA] Function per copiare tabelle

    Originariamente inviato da ULTRAREFLEX
    2) Vorrei sapere se è possibile con il codice far capire alla macchina
    quando fa il .AddNew di selezionare i record in ordine crescente in base ad
    un campo della tabella DettaglioOfferte.
    per ordinare i record ti basta scrivere una select come origine dati del recordset:
    codice:
    Dim strSql As String
    strSql = "SELECT * FROM DettaglioOfferta ORDER BY NomeCampo"
    Set rst = db.OpenRecordset(strSql, dbOpenDynaset)

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3

    Re: Re: [Access VBA] Function per copiare tabelle

    Originariamente inviato da ladyBlu
    per ordinare i record ti basta scrivere una select come origine dati del recordset:
    codice:
    Dim strSql As String
    strSql = "SELECT * FROM DettaglioOfferta ORDER BY NomeCampo"
    Set rst = db.OpenRecordset(strSql, dbOpenDynaset)
    Grazie Tesoro!!! Funziona!! A buon Rendere!!

    ULTRAREFLEX

  4. #4

    Re: [Access VBA] Function per copiare tabelle

    Originariamente inviato da ULTRAREFLEX
    1)...
    ContatoreVolante = IIf(IsNull(DMax("[Riga]", "[TabellaTemp]") + 3), 1)
    Solo che mi dà errore: Argomento non facoltativo. Vorrei solo dirgli che se lo trova null di impostarlo a 1 ma non ci riesco.
    la sintassi di IIf è questa:

    IIf(Espressione, True, False)

    ciò significa che bisogna specificare l'espressione da verificare, il valore da assegnare se la condizione è vera, e il valore da assegnare se è falsa.
    quindi nel tuo caso, l'IIf controlla se la DMax restituisce NULL; se è vero, gli passi 0, se è falso, e quindi (la DMax() + 3) è > di 0, gli passi 1 in questo modo:
    codice:
    ContatoreVolante = IIf(IsNull(DMax("Riga", "TabellaTemp") + 3), 0, 1)

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  5. #5
    Originariamente inviato da ladyBlu
    per ordinare i record ti basta scrivere una select come origine dati del recordset:
    codice:
    Dim strSql As String
    strSql = "SELECT * FROM DettaglioOfferta ORDER BY NomeCampo"
    Set rst = db.OpenRecordset(strSql, dbOpenDynaset)
    Carissima tutto funziona alla meraviglia!!!
    Solo che quando l'ho fatto vedere al bos mi ha chiesto un'altra cosa che sto provando a fare da ieri sera ma mi da sempre errore......

    strSql = "SELECT * FROM DettaglioOfferta WHERE IDOfferta = Forms!SelezionaOfferta!IDOfferta ORDER BY Riga"

    Quando lancio la function mi sottolinea questo: Set rst = db.OpenRecordset(strSql, dbOpenDynaset) e mi dice "Informazioni insufficienti Previsto1"

    Hai qualche idea a proposito?? Non capisco l'errore visto anche che la guida in linea non funziona......

    Grazie Ancora!!

    Ultra

    ULTRAREFLEX

  6. #6
    ecco, prova così:
    codice:
    strSql = "SELECT * FROM DettaglioOfferta WHERE IDOfferta = "
         & Forms!SelezionaOfferta!IDOfferta & " ORDER BY Riga"
    
    Set rst = db.OpenRecordset(strSql, dbOpenDynaset)
    ciao bello

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  7. #7
    Originariamente inviato da ladyBlu
    ecco, prova così:
    codice:
    strSql = "SELECT * FROM DettaglioOfferta WHERE IDOfferta = "
         & Forms!SelezionaOfferta!IDOfferta & " ORDER BY Riga"
    
    Set rst = db.OpenRecordset(strSql, dbOpenDynaset)
    ciao bello
    Ma....tu sei un genio....o cosa?? ehehehehehe sei veramente in gamba! Grazie ancora Lady.... spero di poter contraccambiare un giorno....
    Un abbraccio

    Ultra
    ULTRAREFLEX

  8. #8
    Originariamente inviato da ULTRAREFLEX
    Ma....tu sei un genio....o cosa?? ehehehehehe sei veramente in gamba! Grazie ancora Lady.... spero di poter contraccambiare un giorno....
    Un abbraccio

    Ultra
    grazie Ultra
    l'importante è che tutto funzioni


    ciao caro

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.