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

    Una Function che non "Function" :)

    Salve a tutti...
    Ho un problemino con una function che non ne vuol sapere di funzionare....Vi
    spiego un attimo.....ho due mdb, uno è il gestionale e l'altro è l'archivio.
    Il problema è che quando vado a scrivere nell'archivio il pc non mi si
    collega dandomi un errore di runtime dicendomi che l'utente ADMIN ha messo il database in uno stato in cui è impossibile aprirlo o modificarlo....(non ho fatto nulla di tutto ciò). Non solo se lancio il solo codice non mi apre il db archivio nel recordset che vorrei io dicendo che è necessario 1...poi questo 1 che cavolo sarà.....?
    Vi incollo il codice:

    Option Compare Database
    Option Explicit

    Public Function SalvataggioOfferteSuArchivio2()
    Dim dbs As Database
    Dim db As Database
    Dim rst As Recordset, rst2 As Recordset, rsta1 As Recordset, rsta As
    Recordset, rsControlloOf As Recordset, rsControlloDf As Recordset
    Dim strSQL As String
    Dim strSql2 As String
    Dim strSQL3 As String
    Dim strSQL4 As String
    Set db = CurrentDb
    strSql2 = "SELECT * FROM Offerta WHERE IDOfferte = " &
    Forms!Offerte01!IDOfferte & ""
    strSQL = "SELECT * FROM DettaglioOfferta WHERE IDOfferte = " &
    Forms!Offerte01!IDOfferte & " ORDER BY Riga"
    strSQL3 = "SELECT * FROM Offerta WHERE IDOfferte = " &
    Forms!Offerte01!IDOfferte & ""
    strSQL4 = "SELECT * FROM DettaglioOfferta WHERE IDOfferte = " &
    Forms!Offerte01!IDOfferte & " ORDER BY Riga"
    Set dbs = OpenDatabase("C:\Documenti\ArchivioEstero.mdb")
    Set rst = dbs.OpenRecordset(strSQL4, dbOpenDynaset)
    Set rst2 = dbs.OpenRecordset(strSQL3, dbOpenDynaset)
    Set rsta = db.OpenRecordset(strSQL, dbOpenDynaset)
    Set rsta1 = db.OpenRecordset(strSql2, dbOpenDynaset)

    mi continua a dare errore sul rst dicendomi che è necessario 1.......chi sà
    dirmi se il codice è sbagliato e come risolvere sta cosa???

    Io dovrei aprire il recordset del db archivio che corrisponde a: Forms!Offerte01!IDOfferte (campo numerico).

    Grazie a chiunque possa aiutarmi )))



    Grazie ancora a tutti!!


    Ultra
    ULTRAREFLEX

  2. #2
    se è questa la riga che ti da errore:

    strSQL3 = "SELECT * FROM Offerta WHERE IDOfferte = " &
    Forms!Offerte01!IDOfferte & ""

    visto che IDOfferte è numerico, togli le apici e la & finale:

    strSQL3 = "SELECT * FROM Offerta WHERE IDOfferte = " &
    Forms!Offerte01!IDOfferte


    PS:
    modificheresti il tuo post scrivento il codice tra i tag appositi

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

  3. #3
    Ciao Lady

    Che intendi con il tuo Ps: Modificheresti il tuo codice con i tag appositi?? non l'ho capito......:P

    Grazie ancora provo subito
    ULTRAREFLEX

  4. #4
    Allora...ci ho provato ma niente da fare......
    l'errore che mi dà è questo:
    "Errore di runtine '3734':
    Il database è stato messo dall'utente 'Admin' del computer 'NEC' in uno stato che non consente di aprirlo o di bloccarlo."
    E mi evidenzia questa riga:
    Set db = CurrentDb

    Quello che vorrei io e che non riesco con niente è questo:
    Ho due database uno dove lavoro e uno dove salvo l'Archivio.

    Devo fare un Edit nel caso in cui il campo che devo inserire è già presente nel db archivio (quindi a quel punto per forza di cose mi deve prendere il record dove il campo IDOfferte è uguale a quello aperto nella form offerte01 per poi modificarlo) altrimenti faccio un addNew nel caso non esista giusto??
    Solo che lui non riesce a recuperare il record nell'archivio di cui ho bisogno e nel quale devo fare l'edit.

    Allora ho pensato che c'è un errore nel codice che ho postato sopra.....hai qualche idea???

    Grazie ancora!!

    Ultra
    ULTRAREFLEX

  5. #5
    sei su access giusto ultra?



    PS:
    intendevo dire che per scrivere il codice rendendolo più leggibile sono messi a nostra disposizione i tag [*code][*/code] che utilizzati senza l'asterisco * rendono il codice ordinato. Ovviamente il codice va scritto tra i due tag

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

  6. #6
    Eccomi....capito adesso la questione dei tag.....non lo sapevo :gren:

    Io credo di essere sul forum giusto visto che comunque questo è access 2000 con VBA

    Comunque ripeto il codice così almeno sarà più leggibile e più chiaro

    Codice:
    codice:
     
    Option Compare Database 
    Option Explicit 
    
    Public Function SalvataggioOfferteSuArchivio2() 
    Dim dbs As Database 
    Dim db As Database 
    Dim rst As Recordset, rst2 As Recordset, rsta1 As Recordset, rsta As 
    Recordset, rsControlloOf As Recordset, rsControlloDf As Recordset 
    Dim strSQL As String 
    Dim strSql2 As String 
    Dim strSQL3 As String 
    Dim strSQL4 As String 
    Set db = CurrentDb 
    strSql2 = "SELECT * FROM Offerta WHERE IDOfferte = " & 
    Forms!Offerte01!IDOfferte & "" 
    strSQL = "SELECT * FROM DettaglioOfferta WHERE IDOfferte = " & 
    Forms!Offerte01!IDOfferte & " ORDER BY Riga" 
    strSQL3 = "SELECT * FROM Offerta WHERE IDOfferte = " & 
    Forms!Offerte01!IDOfferte & "" 
    strSQL4 = "SELECT * FROM DettaglioOfferta WHERE IDOfferte = " & 
    Forms!Offerte01!IDOfferte & " ORDER BY Riga" 
    Set dbs = OpenDatabase("C:\Documenti\ArchivioEstero.mdb") 
    Set rst = dbs.OpenRecordset(strSQL4, dbOpenDynaset) 
    Set rst2 = dbs.OpenRecordset(strSQL3, dbOpenDynaset) 
    Set rsta = db.OpenRecordset(strSQL, dbOpenDynaset) 
    Set rsta1 = db.OpenRecordset(strSql2, dbOpenDynaset)

    Sai darmi una soluzione?

    Grazie ancora

    ULTRAREFLEX

  7. #7
    prova a togliere il settaggio del db e ad aprire i recordset direttamente con CurrentDb:
    codice:
    Option Compare Database 
    Option Explicit 
    
    Public Function SalvataggioOfferteSuArchivio2() 
    
    Dim dbs As Database 
    
    Dim rst As Recordset, rst2 As Recordset, rsta1 As Recordset, 
    Dim rsta As Recordset, rsControlloOf As Recordset, 
    Dim rsControlloDf As Recordset 
    Dim strSQL As String, strSql2 As String
    Dim strSQL3 As String, strSQL4 As String 
    
    strSql2 = "SELECT * FROM Offerta WHERE IDOfferte = " & 
               Forms!Offerte01!IDOfferte
    strSQL = "SELECT * FROM DettaglioOfferta WHERE IDOfferte = " & 
               Forms!Offerte01!IDOfferte & " ORDER BY Riga" 
    strSQL3 = "SELECT * FROM Offerta WHERE IDOfferte = " & 
               Forms!Offerte01!IDOfferte
    strSQL4 = "SELECT * FROM DettaglioOfferta WHERE IDOfferte = " & 
               Forms!Offerte01!IDOfferte & " ORDER BY Riga" 
    
    Set dbs = OpenDatabase("C:\Documenti\ArchivioEstero.mdb") 
    Set rst = dbs.OpenRecordset(strSQL4, dbOpenDynaset) 
    Set rst2 = dbs.OpenRecordset(strSQL3, dbOpenDynaset) 
    Set rsta = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) 
    Set rsta1 = CurrentDb.OpenRecordset(strSql2, dbOpenDynaset)



    Ultra, se IDOfferte è un campo numerico è inutile che nelle select aggiungi & "" dopo Forms!Offerte01!IDOfferte

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

  8. #8
    Ciao Ledy.....ho provato come dici tu ma niente da fare....mi dà lo stesso errore.....:

    "Errore di runtine '3734':
    Il database è stato messo dall'utente 'Admin' del computer 'NEC' in uno stato che non consente di aprirlo o di bloccarlo."


    Non capisco...sembra che gli stia antipatico aprire due database insieme....possibile?? Sembra che gli stia antipatico il CurrentDb ma tanto come faccio a dirgli che deve leggere nel db aperto e dove sto lavorando???

    Grazie Ultra


    ULTRAREFLEX

  9. #9
    Nei riferimenti del progetto è inserita la libreria di DAO? :master:
    si, sicuramente, sennò ti dava errore già sulla dichiarazione dei recordset...:master:

    una volta mi è capitata una cosa del genere, però non mi ricordo come ho risolto
    forse non vuole il tipo di cursore specificato!?
    prova a togliere:

    dbOpenDynaset quanto setti i recordset

    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.