Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di deedlyt
    Registrato dal
    Jan 2002
    Messaggi
    444

    [VB.net] Problema di gestione dll

    Salve a tutti..

    io ho un piccolo problema con una mia dll.Ho notato che quando 2 persone allo stesso istante chiamano la dll, succede che le info che mi passa questa dll si accavalcano..


    come faccio a gestire un tipo di semaforo??
    qualcuno ha un esempio da farmi..


    grazie

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212

    Re: [VB.net] Problema di gestione dll

    Originariamente inviato da deedlyt
    Salve a tutti..

    io ho un piccolo problema con una mia dll.Ho notato che quando 2 persone allo stesso istante chiamano la dll, succede che le info che mi passa questa dll si accavalcano..


    come faccio a gestire un tipo di semaforo??
    qualcuno ha un esempio da farmi..


    grazie
    potresti spiegarmi meglio cosa accade?

    magari se puoi postare anche un po di codice....

  3. #3
    Utente di HTML.it L'avatar di deedlyt
    Registrato dal
    Jan 2002
    Messaggi
    444
    Ho un pulsante "INVIA" dove chiama la mia dll che non fa altro che aprire un foglio excel e salvare un set di dati presi da una griglia e poi lo salva dentro questo foglio. Poi fa la CLOSE di questo oggetto.

    il problema è che se 2 persono da 2 impostazioni premono INVIA ..la dll genera solo un foglio con i dati un pò mix dei 2.

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    credo che il problema risieda nel codice della dll....

    o fai in modo che gestica + thread contemporaneamente oppure cerchi di ottimizzare il flusso logico della dll.

    La seconda richiesta dovrebbe partire solo dopo aver terminato la prima.

    e poi, il file xls viene creato sulla macchina dell'utente che ha lanciato il processo o sulla macchina dove si trova la dll?

    Bisogna vedere anche il codice che gestisce la chiamata alla dll....


    se proprio non puoi postare nessuna riga, ti posso aiutare pochino...

  5. #5
    Utente di HTML.it L'avatar di deedlyt
    Registrato dal
    Jan 2002
    Messaggi
    444
    Sub esegui_esportazione(soc As String, prog As String)

    '**** preparazione cartela ****

    On Error GoTo errmgr

    Set oapplicazione = New Excel.Application
    Set oCartella = oapplicazione.Workbooks.Add
    Set oFoglio = oCartella.Worksheets("Foglio1")
    Set fso = New Scripting.FileSystemObject
    'Set progressivo = New ADODB.Recordset
    'Set Rapp_Attivita = New ADODB.Recordset
    'Set RI_Ris = New ADODB.Recordset
    'Set Giorni_Att = New ADODB.Recordset
    'Set rigaCount = New ADODB.Recordset
    'Set prova = New ADODB.Recordset
    'Set AN_Anticipi = New ADODB.Recordset
    'Set SD_StatiDoc = New ADODB.Recordset

    VerificaWF NomeRisorsa, myAnno, myMese


    counter = 0
    TOTALE_SpeseRIM = 0
    SpesePrepagateCC = 0
    SpesePrepagate = 0
    SpeseSostenute = 0
    TOTAnticipi = 0
    ImpTRASP_P = 0
    ImpTRASP_C = 0
    ImpTRASP_SOS = 0
    ImpALLOG_P = 0
    ImpALLOG_C = 0
    ImpALLOG_SOS = 0
    ImpPRANZO_P = 0
    ImpPRANZO_C = 0
    ImpPRANZO_SOS = 0
    ImpCENA_P = 0
    ImpCENA_C = 0
    ImpCENA_SOS = 0
    ImpALTRO_P = 0
    ImpALTRO_C = 0
    ImpALTRO_SOS = 0
    TOTALE_VAR = ""
    '------------

    Set Rapp_Attivita = Run(ConnString_Rapp, "qryRapp_Attivita")
    Set RI_Ris = Run(ConnString_WI, "qryRI_Ris")
    Set Giorni_Att = Run(ConnString_Rapp, "qryGiorni_Att")
    Set AN_Anticipi = Run(ConnString_Rapp, "qryAN_Anticipi")
    TOTALE_FERIE = 0
    TOTALE_ASSENZA = 0
    TOTALE_ORE_FERIE = 0
    TOTALE_ORE_ASSENZA = 0
    TOTAnticipi = 0
    totaleore = 0
    totgiorni = 0
    totTICKET = 0
    totdiariaA = 0
    totdiariaB = 0
    nriga = 0
    With oCartella
    ' oapplicazione.DefaultFilePath = Path
    setVariabili
    '******************** TESTA ***************************

    strValue = "COGNOME:"
    subHeader strValue, col(cognome), riga(cognome), "", 51, True, 8, 7, False, False, False

    strValue = UCase(mycognome)
    subHeader strValue, col(cognome) + 2, riga(cognome), "", 1, False, 8, 11, False, False, False

    strValue = "NOME:"
    subHeader strValue, col(c_nome), riga(c_nome), "", 51, True, 8, 10, False, False, False

    strValue = UCase(mynome)
    subHeader strValue, col(c_nome) + 1, riga(c_nome), "", 1, False, 8, 4, False, False, False

    strValue = "ORE STD:"
    subHeader strValue, col(ore), riga(ore), "", 51, True, 8, 7, False, False, False

    strValue = RI_Ris!RI_NUM_OreStd
    subHeader strValue, col(ore) + 2, riga(ore), "", 1, False, 8, 11, False, False, False

    strValue = "C di C:"
    subHeader strValue, col(CDC), riga(CDC), "", 51, True, 8, 10, False, False, False

    If IsNull(RI_Ris!RI_ID_CDCAdd) Then
    'Set myCDC2 = New ADODB.Recordset
    Set myCDC2 = Run(ConnString_WI, "qry_CDC2")
    strValue = myCDC2!UO_ID_CDC
    subHeader strValue, col(CDC) + 1, riga(CDC), "", 1, False, 8, 4, False, False, False
    Else
    strValue = RI_Ris!RI_ID_CDCAdd
    subHeader strValue, col(CDC) + 1, riga(CDC), "", 1, False, 8, 4, False, False, False
    End If

    strValue = "SEDE:"
    subHeader strValue, col(Sede), riga(Sede), "", 51, True, 8, 10, False, False, False

    strValue = RI_Ris!RI_ID_Sede
    subHeader strValue, col(Sede) + 1, riga(Sede), "", 1, False, 8, 4, False, False, False

    strValue = "NOTA SPESE:"
    subHeader strValue, col(italia), riga(italia), "", 51, True, 8, 7, False, False, False

    strValue = Rapp_Attivita!RA_FLG_Italia
    subHeader strValue, col(italia) + 2, riga(italia), "", 1, False, 8, 11, False, False, False

    strValue = "VALUTA:"
    subHeader strValue, col(Valuta), riga(Valuta), "", 51, True, 8, 7, False, False, False

    strValue = Rapp_Attivita!Valuta
    subHeader strValue, col(Valuta) + 2, riga(Valuta), "", 1, False, 8, 11, False, False, False

    strValue = "MESE:"
    subHeader strValue, col(mese), riga(mese), "", 51, True, 8, 7, False, False, False

    strValue = Rapp_Attivita!mese
    subHeader strValue, col(mese) + 2, riga(mese), "", 1, False, 8, 11, False, False, False

    strValue = "ANNO:"
    subHeader strValue, col(anno), riga(anno), "", 51, True, 8, 10, False, False, False

    strValue = Rapp_Attivita!RA_NUM_Anno
    subHeader strValue, col(anno) + 1, riga(anno), "", 1, False, 8, 4, False, False, False

    strValue = "STATO:"
    subHeader strValue, col(stato), riga(stato), "", 51, True, 8, 10, False, False, False

    'strValue = Rapp_Attivita!StatiDoc
    strValue = "IN APPROVAZIONE"
    subHeader strValue, col(stato) + 1, riga(stato), "", 1, False, 8, 4, False, False, False

    formatta_Cella

    '*********************** BODY **************************
    strValue = "GIORNO"
    subHeader strValue, col(giorni), riga(giorni), "", 1, True, 8, 7, False, True, True

    strValue = "D/T"
    subHeader strValue, col(ticket), riga(ticket), "", 1, True, 8, 6, False, True, True

    strValue = "CLIENTE FINALE"
    subHeader strValue, col(cliente_fil), riga(cliente_fil), "", 1, True, 8, 13, False, True, True

    strValue = "LOCALITA'"
    subHeader strValue, col(localita), riga(localita), "", 1, True, 8, 11, False, True, True

    strValue = "COMMESSA"
    subHeader strValue, col(CommPropria), riga(CommPropria), "", 1, True, 8, 10, False, True, True

    strValue = "COD ATT."
    subHeader strValue, col(AttivitaPropria), riga(AttivitaPropria), "", 1, True, 8, 4, False, True, True

    strValue = "CDC"
    subHeader strValue, col(CDCPropria), riga(CDCPropria), "", 1, True, 8, 4, False, True, True

    strValue = "ORE"
    subHeader strValue, col(NUMore), riga(NUMore), "", 1, True, 8, 4, False, True, True


    ..............
    .....
    ..............







    FileName = NomeRisorsa & " _ " & myAnno & " _ " & myMese & " _ " & GrSocieta & " _ " & Format$(Now, "yymmddhhmmss")

    .SaveAs Path & "\" & FileName


    End With
    oapplicazione.Workbooks.Close
    oapplicazione.Quit
    'Faccio la delete del file nella cartella temporanea
    pippo = Path & "\" & FileName & ".xls"
    fso.DeleteFile pippo, True

    If oFoglio Is Nothing = False Then Set oFoglio = Nothing
    If oCartella Is Nothing = False Then Set oCartella = Nothing
    If oapplicazione Is Nothing = False Then Set oapplicazione = Nothing
    Exit Sub
    errmgr:
    myErrMessage = "127 - E' stato rilevato il seguente errore: " & Err.Number & " - " & Err.Description

    End Sub





    La dll sta sul server e il file xls viene generato sul server.

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ma non hai parlato di VB.NET?

    Che c'entra ON ERROR GOTO e ERR.etc etc ?


    cmq adesso gli dò un'occhiata e spero di poterti dare una mano


  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    scusami ma credo sia un pò incasinato il codice...questa è sintassi VB6, non c'entra niente con VB.NET....

    sicuramente potresti ottimizzare il tutto utilizzando la sintassi appropiata (ammesso che tu stia sviluppando in VB.NET)

    Fossi in te mi cercherei le classi che + mi possono servire e riscriverei tutto....



    buon lavoro

  8. #8
    Utente di HTML.it L'avatar di deedlyt
    Registrato dal
    Jan 2002
    Messaggi
    444
    opps ora ti mando il codice in vb.net..


    ho la dll fatta in 2 ling.



    Sub esegui_esportazione(ByRef soc As String, ByRef prog As String)
    ''''''''''''''''
    '**** preparazione cartela ****
    On Error GoTo errmgr


    oapplicazione = New Excel.Application()
    oCartella = oapplicazione.Workbooks.Add
    oFoglio = oCartella.Worksheets("Foglio1")


    VerificaWF(NomeRisorsa, myAnno, myMese)

    TOTALE_VAR = ""
    counter = 0
    TOTALE_SpeseRIM = 0
    SpesePrepagateCC = 0
    SpesePrepagate = 0
    SpeseSostenute = 0
    'TOTAnticipi = 0
    ImpTRASP_P = 0
    ImpTRASP_C = 0
    ImpTRASP_SOS = 0
    ImpALLOG_P = 0
    ImpALLOG_C = 0
    ImpALLOG_SOS = 0
    ImpPRANZO_P = 0
    ImpPRANZO_C = 0
    ImpPRANZO_SOS = 0
    ImpCENA_P = 0
    ImpCENA_C = 0
    ImpCENA_SOS = 0
    ImpALTRO_P = 0
    ImpALTRO_C = 0
    ImpALTRO_SOS = 0
    '------------


    Rapp_Attivita = Run(ConnString_Rapp, "qryRapp_Attivita")
    RI_Ris = Run(ConnString_WI, "qryRI_Ris")
    Giorni_Att = Run(ConnString_Rapp, "qryGiorni_Att")
    AN_Anticipi = Run(ConnString_Rapp, "qryAN_Anticipi")
    TOTALE_FERIE = 0
    TOTALE_ASSENZA = 0
    TOTALE_ORE_FERIE = 0
    TOTALE_ORE_ASSENZA = 0
    TOTAnticipi = 0
    totaleore = 0
    totgiorni = 0
    totTICKET = 0
    totdiariaA = 0
    totdiariaB = 0
    nriga = 0
    With oCartella

    setVariabili()
    '******************** TESTA ***************************

    strValue = "COGNOME:"
    subHeader(strValue, col(cognome), riga(cognome), "", 51, True, 8, 7, False, False, False)

    strValue = UCase(mycognome)
    subHeader(strValue, col(cognome) + 2, riga(cognome), "", 1, False, 8, 11, False, False, False)

    strValue = "NOME:"
    subHeader(strValue, col(c_nome), riga(c_nome), "", 51, True, 8, 10, False, False, False)

    strValue = UCase(mynome)
    subHeader(strValue, col(c_nome) + 1, riga(c_nome), "", 1, False, 8, 4, False, False, False)

    strValue = "ORE STD:"
    subHeader(strValue, col(ore), riga(ore), "", 51, True, 8, 7, False, False, False)

    strValue = RI_Ris.Fields("RI_NUM_OreStd").Value
    subHeader(strValue, col(ore) + 2, riga(ore), "", 1, False, 8, 11, False, False, False)

    strValue = "C di C:"
    subHeader(strValue, col(CDC), riga(CDC), "", 51, True, 8, 10, False, False, False)

    'UPGRADE_WARNING: Use of Null/IsNull() detected. Click for more: 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="vbup1049"'
    If IsDBNull(RI_Ris.Fields("RI_ID_CDCAdd").Value) Then
    'Set myCDC2 = New ADODB.Recordset
    myCDC2 = Run(ConnString_WI, "qry_CDC2")
    strValue = myCDC2.Fields("UO_ID_CDC").Value
    subHeader(strValue, col(CDC) + 1, riga(CDC), "", 1, False, 8, 4, False, False, False)
    Else
    strValue = RI_Ris.Fields("RI_ID_CDCAdd").Value
    subHeader(strValue, col(CDC) + 1, riga(CDC), "", 1, False, 8, 4, False, False, False)
    End If

    strValue = "SEDE:"
    subHeader(strValue, col(Sede), riga(Sede), "", 51, True, 8, 10, False, False, False)

    strValue = RI_Ris.Fields("RI_ID_Sede").Value
    subHeader(strValue, col(Sede) + 1, riga(Sede), "", 1, False, 8, 4, False, False, False)

    strValue = "NOTA SPESE:"
    subHeader(strValue, col(italia), riga(italia), "", 51, True, 8, 7, False, False, False)

    strValue = Rapp_Attivita.Fields("RA_FLG_Italia").Value
    subHeader(strValue, col(italia) + 2, riga(italia), "", 1, False, 8, 11, False, False, False)

    strValue = "VALUTA:"
    subHeader(strValue, col(Valuta), riga(Valuta), "", 51, True, 8, 7, False, False, False)

    strValue = Rapp_Attivita.Fields("Valuta").Value
    subHeader(strValue, col(Valuta) + 2, riga(Valuta), "", 1, False, 8, 11, False, False, False)

    strValue = "MESE:"
    subHeader(strValue, col(mese), riga(mese), "", 51, True, 8, 7, False, False, False)

    strValue = Rapp_Attivita.Fields("mese").Value
    subHeader(strValue, col(mese) + 2, riga(mese), "", 1, False, 8, 11, False, False, False)

    strValue = "ANNO:"
    subHeader(strValue, col(anno), riga(anno), "", 51, True, 8, 10, False, False, False)

    strValue = Rapp_Attivita.Fields("RA_NUM_Anno").Value
    subHeader(strValue, col(anno) + 1, riga(anno), "", 1, False, 8, 4, False, False, False)

    strValue = "STATO:"
    subHeader(strValue, col(stato), riga(stato), "", 51, True, 8, 10, False, False, False)

    'strValue = Rapp_Attivita.Fields("StatiDoc").Value
    strValue = "IN APPROVAZIONE"
    subHeader(strValue, col(stato) + 1, riga(stato), "", 1, False, 8, 4, False, False, False)

    formatta_Cella()
    '*********************** BODY **************************
    strValue = "GIORNO"
    subHeader(strValue, col(giorni), riga(giorni), "", 1, True, 8, 7, False, True, True)

    strValue = "D/T"
    subHeader(strValue, col(ticket), riga(ticket), "", 1, True, 8, 6, False, True, True)

    strValue = "CLIENTE FINALE"
    subHeader(strValue, col(cliente_fil), riga(cliente_fil), "", 1, True, 8, 13, False, True, True)

    strValue = "LOCALITA'"
    subHeader(strValue, col(localita), riga(localita), "", 1, True, 8, 11, False, True, True)

    strValue = "COMMESSA"
    subHeader(strValue, col(CommPropria), riga(CommPropria), "", 1, True, 8, 10, False, True, True)

    strValue = "COD ATT."
    subHeader(strValue, col(AttivitaPropria), riga(AttivitaPropria), "", 1, True, 8, 4, False, True, True)

    strValue = "CDC"
    subHeader(strValue, col(CDCPropria), riga(CDCPropria), "", 1, True, 8, 4, False, True, True)

    strValue = "ORE"
    subHeader(strValue, col(NUMore), riga(NUMore), "", 1, True, 8, 4, False, True, True)


    .......
    ...
    .....

    FileName = NomeRisorsa & " _ " & myAnno & " _ " & myMese & " _ " & GrSocieta & " _ " & VB6.Format(Now, "yymmddhhmmss")
    .SaveAs(Path & "\" & FileName)


    End With
    oapplicazione.Workbooks.Close()
    oapplicazione.Quit()

    If oapplicazione Is Nothing = False Then oapplicazione = Nothing
    Exit Sub
    errmgr:
    myErrMessage = "127 - E' stato rilevato il seguente errore: " & Err.Number & " - " & Err.Description

    End Sub

  9. #9
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ok, non voglio entrare nel merito del codice della dll, ma diciamo che funziona( se la lancia un solo utente il risultato che ottieni è quello corretto no? un file con tutti i dati corretti. Giusto?)

    A questo punto bisogna controllare cosa succede nel codice che chiama la dll se eseguito 2 volte e vedere se il problema nasce perchè qualcosanon è stato gestito nel codice client o nel codice della dll.

  10. #10
    Utente di HTML.it L'avatar di deedlyt
    Registrato dal
    Jan 2002
    Messaggi
    444
    il codice funziona.. il problema nasce se allo stesso istante vengono fatte 2 richiesto alla dll.

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.