+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

errore run time 3265

  1. #1
    L'avatar di francof
    francof non  in linea Scolaretto
    ciao a tutti,
    appena risolto, con il vostro aiuto, un problema di ricerca con campo data lo stesso maledetto campo mi d l' errore in oggetto: "impossibile trovare l' oggetto nell' insieme corrispondente al nome o al numero richiesto"

    il nome del campo corretto, l' errore si presenta in aggiornamento della tabella il cod. :


    Dim varCampiDB As Variant, varValoriTxt As Variant
    
    '       Servono un paio di variabili d'appoggio per i valori che non sono stringhe
    Dim datTemp As Date, QslSTemp As String, QslRTemp As String, StTemp As String ', intTemp As Integer
    Dim optBuroTemp As String, optDirTemp As String
    
    '       Viene creato l'Array che contiene i nomi dei campi
    varCampiDB = Array("Qso_St", "Qso_Num", "Qso_Data", "Qso_OraI", "Qso_OraF", _
    "Qso_Mhz", "Qso_Modo", "Qso_Call", "Qso_Nome", "Qso_Qth", "Qso_RstS", "Qso_RstR", _
    "Qso_ProgS", "Qso_ProgR", "Qso_Classe", "Qso_QslS", "Qso_QslR", "Qso_ViaB", "Qso_ViaD")
    datTemp = Format(datTemp, "dd/mm/yyyy")
    
    '   Viene creato l'Array che contiene i valori
    '   I due Array devono essere nello stesso ordine
    varValoriTxt = Array(StTemp, txtQso, datTemp, txtOraI, txtOraF, _
    txtMhz, txtModo, txtCall, txtNome, txtQth, txtRstS, txtRstR, _
    txtPrgS, txtPrgR, txtClasse, QslSTemp, QslRTemp, optBuroTemp, optDirTemp)
    
    '   si posiziona sul rec selez. nella grid
    rsLog.MoveFirst
    rsLog.Find "Qso_Num LIKE '" & MSHFlexGridLog.TextMatrix(MSHFlexGridLog.Row, 1) & "'"
    
    '   Viene infine chiamato l'Update
    rsLog.Update varCampiDB, varValoriTxt
    

    il debug evidenzia l' ultima riga: rsLog.Update varCampiDB, varValoriTxt

    eliminando dagli array il campo Qso_Data e datTemp l' errore non c'

    la cosa strana che una copia di salvataggio del progr. fatta qualche giorno fa, funziona pur non avendo modificato la routine dove si pianta

    franco

  2. #2
    Come hai creato il recordset?
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    L'avatar di francof
    francof non  in linea Scolaretto
    ciao Antonio,

    creo il recordset in form_load:

    ' crea e apre la connessione
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=  C:\LOG Archivi\Log.MDB" _
        & ";Mode=ReadWrite|Share Deny None;Persist Security Info=False"
    cn.Open
    
    '**************************          'controllo dei dati personali
                'apre la tabella
    ' crea e apre il recordset dati personali
    Set rsDp = New ADODB.Recordset
    rsDp.CursorLocation = adUseClient
    
    
    'Set DbLog = OpenDatabase("C:\LOG Archivi\Log.MDB")
    
    'Set rsDp = DbLog.OpenRecordset("tblDatiPers")
    
    rsDp.Open "SELECT  *" & _
    "FROM tblDatiPers", cn, adOpenDynamic, _
    adLockOptimistic, adCmdText
    
    If rsDp.EOF And rsDp.BOF Then
        MsgBox "ATTENZIONE, prima di continuare  necessario inserire i dati personali.", vbExclamation
        Frame1.Visible = True
        tblDP_vuota = True
        Else
            cmdAcqL.Enabled = True
            frmLog2.Caption = "    MANUTENZIONE LOG    " & rsDp.Fields("DP0")
            
            With rsDp
                If .Fields("DP_Ora_Legale") = "*" Then      'se  in vigore l'ora legale
                    chkOraLeg.Value = 1
                    Ora_Legale = True
                End If
                
                If .Fields("DP_ColoriGrid") = "*" Then      'se  sel. la lettura facilitata
                    chk2Colori.Value = 1
                    ColoriGrid = True
                End If
                
                Col_Evidenziatore = .Fields("DP_ColSel")
            End With
            
    End If
    '************************
    
    ' set the pointer during the load phase
    'Screen.MousePointer = vbHourglass
    
    
    ' crea e apre il recordset log
    Set rsLog = New ADODB.Recordset
    rsLog.CursorLocation = adUseClient
    
    ' seleziona i rec
    rsLog.Open "SELECT  Qso_St, Qso_Num, format(Qso_Data ,'dd/mm/yyyy'), Qso_OraI, " & _
    "Qso_OraF, Qso_Mhz , Qso_Modo, Qso_Call, Qso_Nome, Qso_Qth, Qso_RstS, Qso_RstR, " & _
    "Qso_ProgS, Qso_ProgR , Qso_Classe, Qso_QslS, Qso_QslR, Qso_ViaB, Qso_ViaD " & _
    "FROM tblQso ORDER BY Qso_Num;", cn, adOpenDynamic, _
    adLockOptimistic, adCmdText
    
    Set frmLog2.MSHFlexGridLog.Recordset = rsLog
    

    quindi cliccando sulla grid punto il rec selezionato

    '   si posiziona sul rec selez. nella grid
    rsLog.MoveFirst
    rsLog.Find "Qso_Num LIKE '" & MSHFlexGridLog.TextMatrix(MSHFlexGridLog.Row, 1) & "'"
    
    facendo un p (molte) di prove e controlli ho visto che la copia del pgm che funziona in form load ha questo codice che cerco di spiegare:
    il progetto in origine utilizzava DAO e apriva 2 tabelle dello stesso database:
    - tblDatiPers x dati di controllo
    - tblQso x l' archivio
    per ovviare a un tot di problemi ho cominciato a "convertirlo" con ADO, partendo dal codice pi importante che sviluppa tutto il progetto riguardante la tab. tblQso, arrivando a questo:

    '**************************          'controllo dei dati personali
                'apre la tabella con DAO
    Set DbLog = OpenDatabase("C:\LOG Archivi\Log.MDB")
    Set rsdp = DbLog.OpenRecordset("tblDatiPers")
    
    
    If rsdp.EOF And rsdp.BOF Then
        MsgBox "ATTENZIONE, prima di continuare  necessario inserire i dati personali.", vbExclamation
        Frame1.Visible = True
        tblDP_vuota = True
        Else
            cmdAcqL.Enabled = True
            frmLog2.Caption = "    MANUTENZIONE LOG    " & rsdp.Fields("DP0")
            
            With rsdp
                If .Fields("DP_Ora_Legale") = "*" Then      'se  in vigore l'ora legale
                    chkOraLeg.Value = 1
                    Ora_Legale = True
                End If
                
                If .Fields("DP_ColoriGrid") = "*" Then      'se  sel. la lettura facilitata
                    chk2Colori.Value = 1
                    ColoriGrid = True
                End If
                
                Col_Evidenziatore = .Fields("DP_ColSel")
            End With
            
    End If
    '************************
    
    
    
    '      ADO     set the pointer during the load phase
    'Screen.MousePointer = vbHourglass
    
    ' crea e apre la connessione
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=  C:\LOG Archivi\Log.MDB" _
        & ";Mode=ReadWrite|Share Deny None;Persist Security Info=False"
    cn.Open
    
    ' crea e apre il recordset log
    Set rsLog = New ADODB.Recordset
    rsLog.CursorLocation = adUseClient
    
    ' rsEventi.Open "select FORMAT(Data," & Chr(34) & "dd/mm/yyyy" & Chr(34) & ") As DataFormat, Ora, TipoEvento, Numero, Servizio from EVENTI order by Data,Ora", cnEventi, adOpenKeyset, adLockOptimistic
    
    rsLog.Open "SELECT  *" & _
    "FROM tblQso ORDER BY Qso_Num;", cn, adOpenDynamic, _
    adLockOptimistic, adCmdText
    
    Set frmLog2.MSHFlexGridLog.Recordset = rsLog
    
    RSDP un recordset DAO
    RSLOG e un recordset ADO

    ripeto funziona ma, non mi sembrava lineare e cos ho sostituito il cod dao della tab. tblDatiPers come postato nella prima finestra di codice.

    forse non c' entra nulla, sono 2 tabelle diverse, per non trovo altre modifiche nei 2 codici. a meno che non sia una riga sparsa chiss dove.

    franco

  4. #4
    Sbaglio o nella creazione del recordset non hai incluso il campo

    Qso_Data

    (... da cui l'errore in seguito ...)
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    L'avatar di francof
    francof non  in linea Scolaretto
    perdona l' ignoranza ma nella prima riga del select:

    rsLog.Open "SELECT  Qso_St, Qso_Num, format(Qso_Data ,'dd/mm/yyyy'), Qso_OraI, " & _
    "Qso_OraF, Qso_Mhz , Qso_Modo, Qso_Call, Qso_Nome, Qso_Qth, Qso_RstS, Qso_RstR, " & _
    "Qso_ProgS, Qso_ProgR , Qso_Classe, Qso_QslS, Qso_QslR, Qso_ViaB, Qso_ViaD " & _
    "FROM tblQso ORDER BY Qso_Num;", cn, adOpenDynamic, _
    adLockOptimistic, adCmdText
    
    c' il campo Qso_Data " format(Qso_Data ,'dd/mm/yyyy'), " formattato per visualizzare la data nel formato corretto e correttamente riportata nella grid.
    mi stai dicendo che la formattazione disturba il riconoscimento del campo? in effetti nella copia del pgm. che funziona selezionavo tutto :

    rsLog.Open "SELECT  *" & _
    "FROM tblQso ORDER BY Qso_Num;", cn, adOpenDynamic, _
    adLockOptimistic, adCmdText
    
    quindi i 2 diversi metodi x aprire i 2 recordset non c' entrano con il problema.
    se cos come la risolvo? la voglia di mollare tutto forte

    franco

  6. #6
    L'avatar di TheTruster
    TheTruster non  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    prova con:

    format(Qso_Data ,'dd/mm/yyyy') As fQso_Data
    
    e riferisciti al campo con il nuovo nome.

    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

  7. #7
    Ovviamente ... se formattato, il campo non e' piu' trattabile in quanto ne viene creato uno temporaneo.
    ℹ️ Leggi di pi su AntonioG ...

  8. #8
    L'avatar di francof
    francof non  in linea Scolaretto
    ciao TT,
    quindi, se ho capito bene devo, nella creazione del recordset scrivere:
    rsLog.Open "SELECT  Qso_St, Qso_Num, format(Qso_Data ,'dd/mm/yyyy')As fQso_Data, Qso_OraI, " & _
    "Qso_OraF, Qso_Mhz , Qso_Modo, Qso_Call, Qso_Nome, Qso_Qth, Qso_RstS, Qso_RstR, " & _
    "Qso_ProgS, Qso_ProgR , Qso_Classe, Qso_QslS, Qso_QslR, Qso_ViaB, Qso_ViaD " & _
    "FROM tblQso ORDER BY Qso_Num;", cn, adOpenDynamic, _
    adLockOptimistic, adCmdText
    
    e nell' update
    '       Viene creato l'Array che contiene i nomi dei campi
    varCampiDB = Array("Qso_St", "Qso_Num", "fQso_Data", "Qso_OraI", "Qso_OraF", _
    "Qso_Mhz", "Qso_Modo", "Qso_Call", "Qso_Nome", "Qso_Qth", "Qso_RstS", "Qso_RstR", _
    "Qso_ProgS", "Qso_ProgR", "Qso_Classe", "Qso_QslS", "Qso_QslR", "Qso_ViaB", "Qso_ViaD")
    datTemp = Format(datTemp, "dd/mm/yyyy")
    
    oltre che in tutti i punti dove il campo Qso_Data utilizzato? e utilizzare lo stesso nome (.... As Qso_Data)? no eh?

    franco

  9. #9
    L'avatar di francof
    francof non  in linea Scolaretto
    ahi, cambiato l' errore.
    ho aggiunto As fQso_Data nelle sql che creano il recodrset e sostituito il nome originale con fQso_Data nell' update e dove era presente il nome del campo data. alla riga

    rsLog.Update varCampiDB, varValoriTxt
    
    si verifica il seg. errore di run time '-2147217887 (80040e21)'
    Si sono verificati errori in un' operazione composta da pi passaggi.
    controllare i singoli valori di stato

  10. #10
    No ... la richiesta di modifica di un campo "temporaneo" non ha senso ... quel campo viene creato "al volo" ma non ha una controparte nella tabella ...

    Ma la format e' importante metterla nella query? Non puoi farla dopo?
    ℹ️ Leggi di pi su AntonioG ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. errore di run time 3061 e errore data (medesimo codice)
    Da tolya90 nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 07-11-2016, 15:04
  2. Risposte: 5
    Ultimo Post: 13-07-2012, 08:25
  3. Errore 3265
    Da inishmore nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 10-06-2012, 11:28
  4. Risposte: 3
    Ultimo Post: 10-12-2011, 09:39
  5. Errore run-time '3265'
    Da Stefanone nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 14-03-2006, 16:26