Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    23
    sono un idiota chiedo scusa ... il file non è un txt ma un ".LOG" e quindi non lo trovava...ma adesso non trova nulla... e non è possibile xkè nel file la parola c'è...

    di seguito il codice
    ------------------------------
    Private Sub Testo14_Click()
    If Dir("C:\Log1.log") = vbNullString Then
    MsgBox "File non trovato.", vbExclamation
    End If
    Dim linea As String
    Dim linea2 As String
    Open ("C:\Log1.log") For Input As #1
    Do
    Input #1, linea
    linea2 = linea2 & linea
    Loop Until EOF(1) = True
    If InStr(linea2, "Parola cercata") Then
    MsgBox "la stringa parolacercata è presente nel file txt"
    Else
    MsgBox "La stringa non è presente"
    End If
    End Sub
    ---------------------------------------------------

    io ho trovato un modo per semplificare il lavoro.... a me basterebbe che:

    - All'apertura della maschera contare quante volte è presente una certa parola nel file
    - ogni qualvolta il file viene aggiornato devo sapere quante volte in più e presente la parola da me scelta rispetto all'ultimo aggiornamento
    (se è presente una parola in più allora va inserito il codice (date time now) in un certo campo, ma a screvere la data ci sono mi manca la parte iniziale xò)

    pensavo di poterlo fare con la funzione InStr ma mi cominciano a venire dei dubbi??

    spero di essermi spiegato ed ancora grazie mille x l'aiuto

  2. #12
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    ti posto un codice che forse ti potrebbe risultare utile.
    per salvare il numero di parolo , ho pensato che ti serve un altro file dati.txt


    codice:
    Private Sub Testo14_Click()
    Dim linea As String
    Dim buffer As String
    Dim contatore_parole As Variant 
    Dim i As Long
    
    Dim dati As Variant
    
    Open ("C:\dati.txt") For Input As #1 rem leggi il numero di parole presenti nel file 
    rem salvate in precedenza all'inizio scrivi zero sul file 0
    	Input #1 ,dati
    Close #1
    
    
    Open ("C:\Log1.log") For Input As #1
    	Do Until EOF(1) 
    		Input #1, linea
    		buffer =buffer & linea & Chr(10) & Chr(13)
    	Loop 
    	For i=1 To Len(buffer)
    		i=InStr(i,buffer, "Parola cercata")'trova quante parole sono presenti nel file
    		If i<1  Then Exit For
    		contatore_parole=contatore_parole+1
    		
    	Next i
    Close #1
    MsgBox ("la parola è presente rispetto a prima +  " & contatore_parole-dati)
    If contatore_parole-dati >=1 Then 
        rem qui fai quello che devi fare  se c'e una o piu parole in più
    End If
    Open ("C:\dati.txt") For Output As #1 rem salvi su file il nuovo numero parole
           Print #1 ,CStr(contatore_parole)
    Close #1
    End Sub
    Tecnologia

  3. #13
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    23
    perfetto era quello che cercavo il codice funziona solo che ho inserito l'azione da eseguire ma non va il debug mi evidenzia la riga dell'inserimento testo:

    ----------------------------------------------------------------------------

    Private Sub Comando43_Click()

    Dim linea As String
    Dim buffer As String
    Dim contatore_parole As Variant
    Dim i As Long

    Dim dati As Variant

    Open ("C:\dati.txt") For Input As #1
    Input #1, dati
    Close #1


    Open ("C:\Log1.log") For Input As #1
    Do Until EOF(1)
    Input #1, linea
    buffer = buffer & linea & Chr(10) & Chr(13)
    Loop
    For i = 1 To Len(buffer)
    i = InStr(i, buffer, "OperatorID")
    If i < 1 Then Exit For
    contatore_parole = contatore_parole + 1

    Next i
    Close #1
    MsgBox ("Nuovo Inserimento")
    If contatore_parole - dati >= 1 Then
    Testo14.Text = DateTime.Now
    End If
    Open ("C:\dati.txt") For Output As #1
    Print #1, CStr(contatore_parole)
    Close #1

    End Sub
    ---------------------------------------------------

    e dopo il MsgBox mi rilascia errore:

    "Errore di runtime '2185':

    Impossibile fare riferimento ad una proprietà o ad un metodo per un controllo a meno che non abbia lo stato attivo."


    ps. come fate a inserire il codice nel riquadro???

  4. #14
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dopo il MsgBox prova ad inserire un

    Testo14.SetFocus

    P.S. Usa il tasto CODE quando inserisci il codice nelle risposte
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #15
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    23
    spettacolo adesso va tutto mi servirebbe però che questa operazione venga fatta ogni 15 secondi, ho provato ad inserirla nel form di aggiornamento maschera ma come faccio a dare come tempo di aggiornamento 15 secondi??

    cmq ho notato che se il file txt da leggere è troppo lungo il pc si blocca (x me non è un problema xkè ho sistemato il logger ma era giusto una precisazione x chi volesse saperlo)

    grazie mille ancora

  6. #16
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    premetto che Non conosco vba ma vb6

    comunque per quanto riguarda problemi , con file molto lunghi , puoi sostituire le
    variabili string con il tipo variant , che può contenere una maggior quantità di dati .

    per ripetere la sub ogni tot seconti , ho guardato su google e ho trovato diversi metodi

    ricerca che potevi fare da solo !

    deducendo che stai usando access , vedi se questo codice fa al caso tuo e dimmi se funzina
    come ti ho detto non conosco vba


    codice:
    
    Private Sub Form_Open(Cancel As Integer)
        Me.TimerInterval = 15000
    End Sub
    
    Private Sub Form_Timer()
          Testo14_Click()
    
    End Sub
    Tecnologia

  7. #17
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    23
    ok grazie mille ma mi servirebbe un'ultimo consiglio
    ho provato a cercare ma non ho trovato nulla
    mi è sembrato di capire che dovrei utilizzare la funzione "& Me."

    dovrei fare in modo che il nome del file venga trovato in una tabella:

    ad esempio ho un tabella con nomi di persone e nomi di file e vorrei che in base al nome (che cmq tiro fuori con la funzione "Environ") apra il rispettivo file

  8. #18
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    Me , non è una funzione serve per riferirti al form corrente , esempio miofor se scrivi
    Me all'interno di mioform , ti riferisci a mioform stesso .

    Come ti ho detto non conosco vba , posso capire alcune cose che sono uguali a vb6,
    ma non posso conoscere funzioni e metodi specifici di vba access !

    Sicuramente altre persone , hanno avuto le tue stesse necessita e dubbi , quindi se
    usi google , scrivendo quello che devi fare , puoi trovare informazioni piu mirate ,
    come ho detto io non conosco vba , ma non mi pare che tu lo conosca molto !


    codice trovato in rete ,con qualche aggiunta e commenti fatti da me , non garantisco che funzioni !


    codice:
    
    Sub MyProc
        On Error Goto Err_MyProc
            Dim db as Database
            Dim rst As Recordset
            Dim nomefile as string
            Set db = CurrentDb() 'ti riferisci al database corrente
            Set rst = db.OpenRecordset("tuatabella")'apri la tabella
    		'leggi il campo con il nome del file
            nomefile=rst.Fields("NomeCampo")
    
            
            rst.Close            'Close what you opened.
    
        Exit_MyProc:
            Set rst = Nothing    'Deassign all objects.
            Set db = Nothing
            Exit Sub
    
        Err_MyProc:
            'Error handler here.
            Resume Exit_MyProc
      End Sub
    Tecnologia

  9. #19
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Originariamente inviato da lsd227
    dovrei fare in modo che il nome del file venga trovato in una tabella:
    ad esempio ho un tabella con nomi di persone e nomi di file e vorrei che in base al nome (che cmq tiro fuori con la funzione "Environ") apra il rispettivo file
    A fronte di un nuovo problema, apri una nuova discussione dedicata, seguendo le indicazioni del Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #20
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    23
    ragazzi ho un problema:

    il codice che mi avete fornito funziona correttamente (devo solo finire la partedella ricerca del file nella tabella)

    ma adesso ho provato ad inserire nella stessa maschera o meglio nello stesso form 2 condizioni e ne dovrò aggiungere atri 2 almeno
    adesso il form oltre a cercare "PAROLA1" ed eseguire una determinata operazione quando queste aumentano all'interno del log, cerca anche "PAROLA2" e con lo stesso metodo avengo altri eventi

    diciamo che il sistema funziona ma è lentissimo a volte si blocca e per evidenziare un tasto quanto ti ci posizioni con il cursore ci sta dai 2 ai 4 secondi c'è un modo per velocizarlo pensate che il problema possa essere il Timer??


    codice:
    
    Private Sub Form_Load()
        
        If Dir("C:\dati.txt") = vbNullString Then
        
        Open ("C:\dati.txt") For Append As #1
            Print #1, "0"
            Print #1, "0"
            Print #1, "0"
            Print #1, "0"
            Print #1, "0"
            Print #1, "0"
            Print #1, "0"
            Print #1, "0"
            
               
        Close #1
        
        End If
        
    End Sub
    
    
    Private Sub Form_Open(Cancel As Integer)
        Me.TimerInterval = 1000
    End Sub
    Private Sub Form_Timer()
         
       Dim linea As String
    Dim buffer As String
    Dim contatore_parola1 As Variant
    Dim contatore_parola2 As Variant
    Dim i As Long
    
    Dim parola1 As Variant
    Dim parola2 As Variant
    
    Open ("C:\dati.txt") For Input As #1
    Input #1, parola1
    Input #1, parola2
    Input #1, parola3
    Input #1, parola4
    Input #1, parola5
    Input #1, parola6
    
    Close #1
    
    
    Open ("C:\Log1.log") For Input As #1
    Do Until EOF(1)
    Input #1, linea
    buffer = buffer & linea & Chr(10) & Chr(13)
    Loop
    For i = 1 To Len(buffer)
    i = InStr(i, buffer, "parola1")
    If i < 1 Then Exit For
    contatore_parola1 = contatore_parola1 + 1
    
    Next i
    Close #1
    If contatore_parola1 - parola1 >= 1 Then
    Dim stDocName As String
        Dim stLinkCriteria As String
    
        stDocName = "maschera1"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    End If
    
    Open ("C:\Log1.log") For Input As #1
    Do Until EOF(1)
    Input #1, linea
    buffer = buffer & linea & Chr(10) & Chr(13)
    Loop
    For i = 1 To Len(buffer)
    i = InStr(i, buffer, "parola2")
    If i < 1 Then Exit For
    contatore_parola2 = contatore_parola2 + 1
    
    Next i
    Close #1
    
    If contatore_parola2 - parola2 >= 1 Then
    
        stDocName = "maschera2"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    End If
    Open ("C:\Call.txt") For Output As #1
    Print #1, CStr(contatore_parola1)
    Print #1, CStr(contatore_parola2)
    Print #1, parola3
    Print #1, parola4
    Print #1, parola5
    Print #1, parola6
    
    Close #1
        
    End Sub

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.