Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all 2212 articles
Browse latest View live

RSA in vb6

$
0
0
Buonasera,

   dovrei realizzare una crittografia con le seguenti specifiche:

chiave pubblica RSA contenuta nel certificato X.509 fornito dal sistema TS ed applicando il padding PKCS#1 v 1.5chiave pubblica RSA contenuta nel certificato X.509 fornito dal sistema TS ed applicando il padding PKCS#1 v 1.5

 

utile a crittogtafare un codice fiscale per invio xml nella comunicazione con sistema tessera sanitaria.

Qualcuno di voi sa come fare?

Ciao e grazie.

   Massimo


gestire correttamente il cursore durante lunghe operazioni

$
0
0

Ciao a tutti. Ho utilizzato il backgroundworker per effettuare una operazione lunga in una applicazione. Funziona tutto come deve (esegue l'operazione in background, aggiorna il progress e volendo consente anche di abortire l'operazione con un bottone Cancel). All'inizio dell'operazione lunga disabilito tutti i controlli per evitare che l'utente possa fare altre cose prima della fine dell'operazione e li riabilito quando è finita. E fin qui nulla di strano. Esiste anche un bottone CANCEL che permette di terminare l'operazione prima della suo termine naturale. E anche qui funziona tutto.

Ho impostato il mouse in modalità WAITCURSOR all'inizio dell'operazione (nel thread principale e non in quello esguito dal BGW) e lo rimetto in modalità DEFAULT al termine. E anche qui nessun problema.

Se premo il bottone CANCEL con il cursore in WAIT viene eseguita la cancellazione del lavoro in background (ma non è così che lo vorrei veder funzionare).

Il problema che sto riscontrando è come fare in modo che il cursore diventi automaticamente DEFAULT quando passa sul bottone CANCEL e ritorni WAIT se esco dal bottone stesso.

Ho testato due diversi metodi che però mi hanno dato entrambi un risultato diverso da quello che mi sarei aspettato:

1) Gestione con UseWaitCursor

Nel thread principale e prima di far partire il BGW ho messo le due istruzioni seguenti

             Me.UseWaitCursor=True (e così lo applico a tutti i controlli figlio del form)

             btnCancel.UseWaitCursor=False (rendo il bottone diverso dagli altri controlli)

Al termine del background (nella bgw_RunWorkerCompleted) rimetto a default con

             Me.UseWaitCursor=False

Con questo sistema il cursore diventa WAIT ma quando passo sul bottone CANCEL resta WAIT

2) Gestione con Me.Cursor

Sempre nel thread principale pongo

Me.Cursor=Cursosrs.WaitCursor

e sempre nella bgw_RunWorkerCompleted

Me.Cursor=Cursors.Default

Anche in questo caso il cursore diventa WAIT ma anche qui quando passa sul bottone CANCEL non diventa Default.

Preciso che in un'altra applicazione che usa anch'essa il BGW sono riuscito ad ottenere questo comportamento ma il bottone CANCEL (come la barra del progress) li ho messi in una picturebox che visualizzo quando parte l'operazione lunga. In questa applicazione invece ho messo la barra del progress nella barra di stato e il bottone CANCEL sta direttamente sul form.

Per quale motivo sulla picturebox il cursore riesce a cambiare mentre senza picturebox no?

Sto sbagliando qualcosa o esiste un sistema standard per avere questo risultato?

Grazie

Stefano

VB6 - Errore random nella lettura di un campo blob oracle (adodb) - Error 3001

$
0
0
Buongiorno a tutti,

di recente, in azienda, abbiamo aggiornato oracle dalla 11 alla 12c, per cui c'è stata la necessità di reinstallare anche i driver sui vari client (molti pc utilizzavano ancora i driver della ver 9 di Oracle, che risultavano comunque compatibili con la 11).

Da questo momento, in alcuni pc si verifica un comportamento anomalo nella lettura di un campo di tipo blob, cosa che prima ha sempre funzionato senza alcun problema.

Cioè in modo randomico restituisce un errore durante la lettura.

L'errore che viene generato è questo:

Error 3001 (gli argomenti non sono di tipo valido, non cono compresi nell'intervallo consentito o sono in conflitto)

 

Il programma è stato sviluppato a suo tempo con vb6 sp6 e questa è la procedura che va a leggere il campo:

 

Public Sub ReadBlobFile(ByVal idScheda As Long, ByVal sNomeFile As String, _
                             ByVal strConnection As String)
          Dim cn As ADODB.Connection
          Dim cm As ADODB.Command
          Dim pr As ADODB.Parameter
          Dim rs As ADODB.Recordset
          Dim mStream As ADODB.Stream
          Dim oShell
          Dim sFolder As String

       On Error GoTo ReadBlobFile_Error

10        Screen.MousePointer = 11
          
30        Set cn = New ADODB.Connection
40        Set rs = New ADODB.Recordset
50        Set cm = New ADODB.Command
60        Set pr = New ADODB.Parameter
70        Set mStream = New ADODB.Stream

         
80        mStream.Type = adTypeBinary
90        mStream.Open

         
100       cn.ConnectionString = strConnection
110       cn.ConnectionTimeout = 30
120       cn.Open

         
130       cm.ActiveConnection = cn
140       cm.CommandType = adCmdText
150       cm.CommandText = "SELECT id_scheda, allegato, nomefile FROM ALLEGATI WHERE ID_SCHEDA=:ID_SCHEDA AND NOMEFILE=:NOME_FILE"
160       With cm
170           Set pr = .CreateParameter("ID_SCHEDA", adNumeric, adParamInput, , idScheda)
180           .Parameters.Append pr
190           Set pr = .CreateParameter("NOME_FILE", adChar, adParamInput, 255, sNomeFile)
200           .Parameters.Append pr
210       End With
         
220       Set rs = cm.Execute

230       If Not rs.EOF And Not rs.BOF Then
                 ' caso inserita solo nota testo
240           If Len(rs.Fields(1)) > 0 Then

250               sFolder = GetTempDir & "\"

260               With mStream
270                   .Write rs.Fields("allegato").Value
280                   .SaveToFile sFolder & sFile, adSaveCreateOverWrite
290               End With

300               Set oShell = CreateObject("Shell.Application")
310               Call oShell.ShellExecute(sFolder & sFile)
320           End If
330       End If

340       mStream.Close
350       Set mStream = Nothing
360       Set pr = Nothing
370       Set cm = Nothing
380       rs.Close
390       Set rs = Nothing
400       cn.Close
410       Set cn = Nothing

420       Screen.MousePointer = 0

   On Error GoTo 0
   Exit Sub

ReadBlobFile_Error:
    Screen.MousePointer = 0
    MsgBox "(Riga "& Erl & ") Error "& Err.Number & " ("& Err.Description & ") in procedure ReadBlobFile of Modulo modBlobFile"
         
End Sub

 

L'errore si scatena alla riga 270 (in grassetto)


ho provato a disinstallare i vecchi driver ma niente da fare, sulle macchine più recenti, dove erano già (e soltanto) presenti i driver per la ver 11, questo problema non si è verificato. Per cui, sembra che tutto dipenda dall'aggiornamento. Non so onestamente dove sbattere la testa. Spero sinceramente, ci sia qualche errore nel codice o altrimenti è un bel problema. Riscrivere la procedura in modo da gestire solo il percorso dei file e non i file stessi (cosa sicuramente migliore, ne sono conspevole) non è al momento auspicabile, così come riscrivere il programma in vb.net ... in altre parole avrei bisogno di trovare una soluzione mantenendo questo scenario.

 

Grazie a tutti

VB su VS express 2013 - picture box

$
0
0

salve a tutti,

ho scritto una sub (su un modulo separato) che disegna una grafico con griglia logaritmica su una picture box. Tale sub funziona correttamente quando la richiamo su un form, ad esempio tramite un button_click.

Ho messo la picturebox in un tabcontrol e ho cercato di richiamare la sub di disegno all'evento .selectedindexchanged.  Risultato: si intravede il disegno per una frazione di secondo poi la picturebox diventa vuota.

se metto un pulsante sulla pagina del tabcontrol che richiama la sub funziona tutto. Se prima della call metto un msgbox funziona anche con selectedindexchanged.

perchè non parte con selectedindexchanged e basta?

Grazie

aiuto query con Dao

$
0
0

Salve ragazzi sto creando un applicazione in vb 6 con accesso ai dati Dao.

Il problema è che non riesco a fare una query che mi dia soltanto i primi 15 record che soddisfano la condizione where. Qualcuno puo aiutarmi per favore, non ci riesco proprio,

Stampare con Zebra ZT230

$
0
0

Buongiorno,

vorrei sapere se qualcuno può darmi delle dritte o degli esempi di codice per stampare con questa stampante direttamente da codice...

Per capire, dovrei stampare delle stringhe negli angoli e un codice qr al centro dell'etichetta.


Ho trovato questa libreria, che sembra fare al caso mio, però non sono sicuro di aver capito.

Qui dice quanto sia facile usarlo e sarebbe perfetto, ma non ho capito come farlo!

http://www.neodynamic.com/demo-faq/thermal-label-sdk-net/how-to-create-and-print-barcode-thermal-label-with-zebra-zpl-epl-printers-and-vb-net-or-c-sharp-by-using-thermallabel-sdk-for-net.aspx

 

Qui invece sembra mostrare come inserire gli elementi, ed ho capito abbastanza, però non sono sicuro di poter inserire il codice qr.

http://www.neodynamic.com/demo-faq/thermal-label-sdk-net/how-to-print-multicolumn-labels-in-zebra-zpl-epl-printers-with-vbnet-or-C-by-using-thermallabel-sdk-for-net.aspx


Avreste qualche link da darmi?

Grazie!

Passaggio da vb6 a vb.net (da piattaforma visual studio 2016)

$
0
0

Salve a tutti,

sono nuovo del forum e volevo qualche dritta riguardo al nuovo prodotto vb.net. Ho sempre programmato con vb6 e mi sto accingendo a vb.net (visual basic). il mio dubbio riguarda l'interrogazione dei database che fino ad ora ho interrogato attraverso il metodo ado.net stabilendo la connessione con la stringa e lanciando la query all'interno dello stesso command ,ho provato la medesima operazione con vb.net ma errori a bizzeffe. Il mio dubbio è, posso continuare ad utilizzare questo tipo di accesso per accedere al database (usavo access con estensione .mdb) o mi devo servire per forza degli strumenti datatable, dataset ecc? Premetto che ho provato con quello che c'è sul web ma non sono riuscito ad interrogare il database ma solo a connettere tramite origine dati. Grazie anticipatamente

Problema creazione programma per invio dati al sistemaTS

$
0
0

Buona sera a tutti.
Ho già visto che nel corposissimo post "Invio Dati a Web Service con MTOM"  il problema è stato trattato ma io continuo ad avere delle serie difficoltà (credo di ignorare fasi che lì appaiono quasi scontate, essendo per me argomento totalmente nuovo).
Ho letto anche gli atricoli sulla realizzazione del WCF (prima e seconda parte) ma quando vado a farlo (qualdo importo il webreference) mi trovo in situazioni differenti e mi blocco.

Io utilizzo visual basic 2005

Per me si tartta di argomenti nuovi (WCF,SOAP,MTOM) però in genere studiando un po' le cose riesco a sbrigarmela ma questa volta sono inchiodato da giorni.

La situazione è questa: Io non ho problemi a reperire i dati dal DB e riesco a creare facilmente il file xml. Non ho problemi neanche nella crittografia del cf e del pincode (almeno credo non essendo riuscito a fare prove di invio ma quello che ho trovato nell'altro post mi ha aiutato molto).

Questo è il codice che uso per crittografare:

-------------------------------------------------------------------------------------
Imports System.IO
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports System.Text

 [...]
Public Function Crittografa(ByVal testo As String) As String
        Try
            Dim Certificate As String = Application.StartupPath & "\SanitelCF.cer"
            Dim cert As New X509Certificate2(Certificate)
            Dim rsaEncryptor As RSACryptoServiceProvider = CType(cert.PublicKey.Key, RSACryptoServiceProvider)
            Dim stringa As Byte() = System.Text.Encoding.ASCII.GetBytes(testo)
            Dim cipherData() As Byte = rsaEncryptor.Encrypt(stringa, False)
            Return Convert.ToBase64String(cipherData)
        Catch ex As Exception
            Return testo
            MsgBox(ex.Message)
        End Try
End Function

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

Tutto il rsto per me è un problema...

Già all'inizio quando vado ad importare il file WSDL scaricato dal sito ufficiale ho notato che  non mi trovo InvioTelematicoSpeseSanitarie730pClient (come negli esempi di autenticazione del post che ho letto) ma InvioTelematicoSpeseSanitarie730pService il che mi fa pensare che già sbaglio qualcosa...

Quando importo da "Aggiungi riferimento Web" chiamandolo Invio730

mi ritrovo solamente:
invio730.inviaFileMtomCompletedEventArgs
invio730.inviaFileMtomCompletedEventHandler
invio730.InvioTelematicoSpeseSanitarie730pService
invio730.proprietario
invio730.ricevutainvio

inoltre anche la parte dell'app.config per me rimane abbastanza oscura...

Ripeto, so che è una cosa che è già stata trattata ma se fosse possibile avere un aiuto ve ne sarei grato.

 


time out su connesione

$
0
0

Buon giorno a tutti,
utilizzo da tempo immemore questa funzione per leggere da db sql server:

Public Function SelectDB(ByVal StrSQL As String, ByVal StrCONN As String) As DataSet

        Try

            Dim Conn As New SqlClient.SqlConnection(StrCONN)

            Dim DS As New DataSet

            Dim ADP As New SqlClient.SqlDataAdapter(StrSQL, Conn)

            ADP.Fill(DS)

            ADP.Dispose()

            Conn.Close()

            Conn.Dispose()

            SelectDB = DS

            DS = Nothing

        Catch ex As Exception

.....gestione dell'evetuale errore....

La stringa di connessione è fatta così:
UserID=User;Password=Pwd;database=NomeDB;SERVER=NomeServer;Trusted_Connection=false

Nell'ultima settimana 3 clienti hanno iniziato a ricevere molto frequentemente questo errore "Timeout. Il tempo disponibile è scaduto prima del completamento dell'operazione o il server non risponde". Succede su vari sistemi operativi (XP, 7, 10).

Dopo un po' di prove hanno verificato che la cosa si "risolve" disabilitando il firewall.

Mi rendo conto che può essere un caso (io purtroppo non ho accesso diretto alle macchine / reti su cui succede e non posso fare personalmente verifiche) ma mi stavo chiedendo: non è che qualche aggiornamento di Microsoft sta creando problemi? Qualcuno ultimamente ha avuto casi simili?

Grazie 1000 e buona giornata.

Beppe 

Pubblicazione progetto

$
0
0

Buongiorno, dopo finito il progetto sono passato alla pubblicazione, ma.....quando cerco di aprire il db mi dice:

"Impossibile trovare il database. Controllare il percorso del database. [Data Source = C:\Users\user\AppData\Local\Apps\2.0\Data\H4D2B3A7.7Z0\0YP0HHD6.67\td.a..tion_a6ca5840ee6653cf_0001.0000_3cc7cac744a91b61\Data\Anagrafe.sdf]."

Cosa significa? E cosa devo fare?

Grazie in anticipo

Aggiornamento applicazioni e codice sorgente

$
0
0
Ciao a tutti,
ho creato una libreria che contiene varie funzioni riguardanti l'aggiornamento delle mie applicazioni.
La libreria si collega ad un server remoto mysql, il quale contiene ovviamente tutte le informazioni delle app pubblicate. Confronta quindi l'ultima versione sulla tabella mysql con quella locale, e, se necessario, chiede di eseguire l'aggiornamento(i file aggiornati sono pubblicati in un server ftp, dal quale ne esegue il download).
Il problema è che con un banale decompilatore si riesce a risalire ai dati di accesso del mio server, in quanto sono chiaramente contenuti nelle funzione della libreria... Come posso fare per nasconderli? Grazie a tutti!

Problema velocità: risolvere con Async?

$
0
0

Salve,

Sono nuovo di qui ed ho pure scarsa esperienza con visual basic, per cui vi prego di scusarmi se non rispetterò qualche regola del forum o se sarò poco efficace nel tentativo di spiegarmi.

Cominciamo:

Versione di Visual Studio: 2015

Progetto: Applicazione Windows Form

Finalità: creare un visualizzatore di file.txt contenenti linee di codice, copiandone il contenuto in una richtextbox  dove le parole chiave vengano colorate in modo diverso a seconda della funzione che svolgono (come avviene quando scriviamo in visual studio).

Per fare ciò prelevo le parole chiave da elenchi (anch'essi in forma .txt) e li inserisco in delle matrici; agisco direttamente sul testo copiato tramite streamreader interrogandolo con varie serie di FIND (con cui cerco tutte le parole presenti nelle matrici) in vari cicli FOR NEXT

Problema: Il processo funziona bene, però è molto lento: per i file più lunghi impiega fino a 10 secondi.

Esiste un modo per velocizzare il tutto? 

Non so bene dove andare ad agire con l'async 

Qui il codice (un po' semplificato perché non tiene conto delle varianti delle parole da ricercare [spazio prima, spazio dopo, iniziale maiuscola, a capo dopo etc...]):

 

dim leggi as streamReader

dim File_aprire as string  = percorso file

dim Cartella_con_liste_parole as string = percorso cartella

Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button.Click

        leggi = IO.File.OpenText(apriFile)

        While leggi.Peek > -1

            RichTextBox1.Text = RichTextBox1.Text & leggi.ReadLine() & vbCrLf

        End While

        leggi.Close()

 

        '--------------------------------- STATEMENTS ------------------------------

        Dim comand As String()

        Dim comandi As String = Cartella_con_liste_parole& "Statements.txt"

        EvidenziaDaArray(comandi, comand, Color.DodgerBlue)

        '--------------------------------- STATEMENTS ------------------------------

 

        '--------------------------------- CLASSES ---------------------------------

        Dim clas As String()

        Dim classi As String = Cartella_con_liste_parole& "Classes_Usate.txt"

        EvidenziaDaArray(classi, clas, Color.DarkCyan)

        '--------------------------------- CLASSES ---------------------------------

 

        '--------------------------------- OPERATORS ------------------------------

        Dim oper As String()

        Dim operatori As String = Cartella_con_liste_parole& "Operators.txt"

        EvidenziaDaArray(operatori, oper, Color.DodgerBlue)

        '--------------------------------- OPERATORS ------------------------------

 

        '--------------------------------- DATA TYPES ------------------------------

        Dim tip As String()

        Dim tipi As String = Cartella_con_liste_parole& "Data Types.txt"

        EvidenziaDaArray(tipi, tip, Color.DodgerBlue)

        '--------------------------------- DATA TYPES ------------------------------

 

        '--------------------------------- MODIFIERS ------------------------------

        Dim modif As String()

        Dim modificatori As String = Cartella_con_liste_parole& "Modifiers.txt"

        EvidenziaDaArray(modificatori, modif, Color.DodgerBlue)

        '--------------------------------- MODIFIERS ------------------------------

 

        '--------------------------------- CLAUSES ------------------------------

        Dim claus As String()

        Dim clausole As String = Cartella_con_liste_parole& "Clauses.txt"

        EvidenziaDaArray(clausole, claus, Color.DodgerBlue)

        '--------------------------------- CLAUSES ------------------------------

end sub

Private sub EvidenziaDaAburray(ByVal origine As String, ByVal elenco As String(), ByVal colore As Color) 

        Dim indiceArr As Integer = 0

           leggi = IO.File.OpenText(origine)

        Do While leggi.Peek >= 0

            ReDim Preserve elenco(indiceArr)

            elenco(indiceArr) = leggi.ReadLine()

            indiceArr += 1

        Loop

        leggi.Close()

 

        Dim posizione As Integer = -1

        For Each parola In elenco

            Do

                posizione = RichTextBox1.Find(parola, posizione + 1,

                                              RichTextBoxFinds.MatchCase)

                If posizione > -1 Then

                    RichTextBox1.Select(posizione, parola.Length)

                    RichTextBox1.SelectionColor = colore

                End If

            Loop While posizione <> -1 And posizione <= RichTextBox1.Text.Length - 1

        Next

end sub

 

Ringrazio anticipatamente chiunque sappia (e abbia la bontà di) illuminarmi

Ciao a tutti

Adam

Gestione PictureBox

$
0
0

Uscendo da un form voglio cancellare i files di immagine caricati nel form stesso in una picturebox creata dinamicamente

Non me lo fa fare dandomi il messaggio che si vede nel codice

Per superare il problema devo caricare nella picture un altro file

( PBX.Load("C:\........\fattura.bmp"))

 

Esiste un altro metodo ?

 

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

codice

 Private Sub frmMessaggi_Allegati_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        Dim sFile As String
        '  PBX.Load("C:\arcturus\puntovendita\Immagini\fattura.bmp")
        Me.Controls.Remove(PBX)
        PBX = Nothing
        PDFReader.src = Nothing
        For cnt = 0 To CheckedListBox1.Items.Count - 1
            If CheckedListBox1.GetItemChecked(cnt) Then
                sFile = CheckedListBox1.Items(cnt).ToString
                Try
                    File.Delete(sCartella_Allegati & "\"& sFile)
                Catch ex As Exception
                    'Message = "Il processo non può accedere al file 'C:\Arcturus\puntovendita\Allegati_Messaggi\85.JPEG' perché è in uso da un altro processo."
                End Try
            End If
        Next
    End Sub

Connection string

$
0
0

Buongiorno a tutti,

ho creato con visual studio 2015 un programma in VB. Per esigenze, collego il programma ad un DB Oracle cui si accede con USERID e PASSWORD.

Avrei necessità di "pescare" tali credenziali (nomeDB, USERID, PSW) da un file .csv creato in precedenza ed inserito in apposita cartella su HDD.

 

Ho creato una FORM con una datagridview1(settata in solo lettura) con le tre colonne: (nomeDB, USERID,PSW). Cliccando su un bottone dello stripmenù (collega da file utente), carico da file .csv i necessari dati nelal datagridview1.

Come faccio a collegarmi al DB utilizzando i dati inseriti nella datagridview1?

 Grazie mille come sempre.. Di seguito il codice usato:

 

    Private Sub PersonalizzaToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PersonalizzaToolStripMenuItem.Click

        ' controlla che esista la cartella Merlino, se non esiste creala
        If My.Computer.FileSystem.FileExists("c:\Merlino") = False Then
            My.Computer.FileSystem.CreateDirectory("c:\Merlino")
        End If

        ' controlla che esista il file Utenze, se non esiste creala
        If My.Computer.FileSystem.FileExists("c:\Merlino\Utenze" + ".csv") = False Then
            Dim scrivi As New IO.StreamWriter("c:\Merlino\Utenze" + ".csv")
        Else
            MsgBox("File Utenze OK", MsgBoxStyle.Information, "..::  MERLINO  ::..")
        End If

        DataGridView1.Rows.Clear()

        Dim leggi As New System.IO.StreamReader("c:\Merlino\Utenze" + ".csv")
        Dim riga As String
        Dim parti() As String

        While leggi.Peek() <> -1
            riga = leggi.ReadLine
            parti = Split(riga, ";")
            DataGridView1.Rows.Add(parti)

        End While
        leggi.Close()


    End Sub 

Xamarin su VirtualBox

$
0
0

Buon pomeriggio lista

chiedo scusa se questo non è propriamente il posto per chiedere quanto sotto riportato ma non saprei dove posizionarlo.

Ho installato visual studio 2015, Xamarin.Forms e Xamarin su una macchina virtuale VIRTUALBOX (Vers. 5.1.6) con S.O. windows 10 Anniversary (sia come macchina fisica che macchina virtuale)

Ho creato (vedendo i post di Alessandro Del Sole) un progetto App Portatile.

Il problema è che quando eseguo il codice (che non ho toccato anche se compare la scritta WELCOME... volevo vedere come funzionava)  utilizzando la virtualizzazione 5'' KITKAT.... l'emulatore mentre sta caricando il sistema operativo va in errore e nell'errore viene evidenziato il problema per HYPER-V.

So che questo componente serve per la gestione delle macchine virtuali e nelle specifiche di installazione vengono sconsigliate le macchine virtuali, ma siccome trattasi di documentazione data più di un anno fa spero che si sia trovato il sistema per aggirare questo ostacolo.

La mia "richiesta"è se qualcuno di voi ha delle notizie (buone o cattive) per risolvere questo che ritengo essere un grosso problema (credo che oramai quasi tutti noi lavoriamo con macchine virtuali essendo file che possono essere "bekappati").

Certo del vostro gradito aiuto invio cordiali saluti

Perini Luca

 


System.Drawing.Image.FromFile e out of memory

$
0
0

Ciao a tutti,
in un programma fatto in vb2005 ho un vettore che contiene path e nome file di immagini jpg. Il programma scorre il vettore e carica le immagini in un report fatto con Active Report 6. L'istruzione è questa:

Me.PictureFoto.Image = System.Drawing.Image.FromFile(VettImg.Item(i).PNF)

posta in un loop che scorre il vettore.

Il caricamento avviene senza errori ma al momento della "esposizione" del report (istruzione RPT.run) ricevo un errore di out of memory.

La mia domanda è: dopo ogni istruzione di settaggio della picture con Image.FromFile non è che devo fare qualcosa che serve a liberare memoria?

Grazie 1000.

Beppe

Aggiungere due righe nel foglio excel tipo due insert

$
0
0
Ciao,
  conquesto codice scrivo un foglio excel.

Private Sub Command2_Click()
     strWorksheet = "Fatture"
   Dim Query As String
   Query = "SELECT '' as Regione,'' as codiceasl,'' as codiceSSA, '"& Text4.Text & "' as CF_Professionista, '"& Text5.Text & "' as Partita_Iva , f.data_fattura as data_emissione, '1' as disp, f.Numerofattura, f.data_fattura as data_pagamento, '' as pagamento_anticipato, 'I' as tipo_operazione, anag.Codice_fiscale, d.codice, '' as flag_tipo_spesa, d.importo as importo FROM Fatture AS f, FattureDett AS d, anagrafica as anag Where F.Data_fattura >= #"& Format(Text6.Text, "YYYY\/MM\/DD") & "# and F.Data_fattura <= #"& Format(Text7.Text, "YYYY\/MM\/DD") & "# and f.stato_fattura = 'Attiva' and f.numerofattura = d.numerofattura and f.Anno_riferimento = d.Anno_riferimento and f.codice_cliente = CStr(anag.codice_cliente)"
   Set objDB = OpenDatabase(Nomedb)
   'If excel file already exists, you can delete it here
   If Dir(Filefatture) <>"" Then Kill Filefatture
   
objDB.Execute _
  "SELECT * INTO [Excel 8.0;DATABASE="& Filefatture & _
   "].["& strWorksheet & "] FROM "& "("& Query & ")"
objDB.Close
Set objDB = Nothing
MsgBox "File Fatture per generazione XML eseguito in C:\GestionVet ", vbOKOnly, "CONFERMA"
End Sub

Vorrei però inserire due righe sopra la prima riga creata con il codice sopra. Come devo fare?
Ciao e grazie.
   Massimo

funzione DLast in Access VBA

$
0
0

Salve,

in una maschera di Access (2007) ho scritto questo codice :

Private Sub Form_Load()

Dim j As Integer

j = CInt(DLast("[ide]", "libri"))

Me.a_01.Value = j
Me.b_01.Value = DLookup("città", "libri", "ide="& j)
Me.frase_01.Value = DLookup("testo", "libri", "ide="& j)

Me.a_02.Value = j - 1
Me.b_02.Value = DLookup("città", "libri", "ide="& j - 1)
Me.frase_02.Value = DLookup("testo", "libri", "ide="& j - 1)

Me.a_03.Value = j - 2
Me.b_03.Value = DLookup("città", "libri", "ide="& j - 2)
Me.frase_03.Value = DLookup("testo", "libri", "ide="& j - 2)

End Sub

L'obiettivo è quello di leggere nella maschera e all'interno delle textbox Me.a ...., Me.b ..... e Me.frase .... (numerate)  l'ultimo, il penultimo e il terzultimo record della tabella libri.

Purtroppo una volta aperta la maschera le textbox fanno vedere i record caricati nella prima apertura originaria, quella della prima volta, e nonostante le aperture successive, anche dopo la cancellazione e il nuovo inserimento del codice VBA, si ripete la lettura dei record riferiti alla prima apertura originaria.

Nel caso digiti j=10 oppure 20 ecc. o  j= CInt(Dmax("[ide]", "libri")) riesco ad ottenere il mio obiettivo.

Posso chiedere un vostro parere su come risolvere questo enigma?

Saluti

Alessandro

 

TreeView e SubNodi: Possibile BUG?

$
0
0

Buongiorno a tutti voi,

non riesco a venir fuori da una situazione che nel mio piccolo appare strana per quanto riguarda il controllo TreeView.

Se eseguo un ciclo For oppure un For Each nei Nodi per recuperare il Text dei SubNodi, questo mi restituisce sempre ed esclusivamente il Text dell'ultimo SubNodo:

 

CODE:

        For i As Integer = 0 To TreeView.SelectedNode.Nodes.Count - 1

            STRINGA = Me.SelectedNode.Nodes(i).Text

        Next

oppure

        For Each SubNode As TreeNode In TreeView .SelectedNode.Nodes

            STRINGA  = SubNode.Text

        Next

END CODE


So che la TreeView ha una serie di BUG ma in questo caso non capisco se sto sbagliando io oppure è un BUG.

Spero possiate illuminarmi in merito

Grazie a tutti voi.

Ciao

errore durante la creazione dell'handle della finestra

$
0
0

Ciao a tutti,
in un'applicazione ho una form principale (gappnew) dalla quale l'utente può aprire diverse altre form, alcune child e alcune dialog; dopo circa 2 ore di lavoro l'applicazione va in crash con l'errore in oggetto.
Le form vengono aperte in questo modo:
(child)
Public Sub ShowChildForm(ByVal frm As Form)
        frm.Show()
        frm.BringToFront()
End Sub
(dialog)
Public Sub ShowDialogForm(ByVal frm As Form)
frm.ShowDialog()
frm.Dispose()
End Sub
ogni form child ha nell'evento FormClosing questo codice:
Dim frm As gappnew = Application.OpenForms("gappnew")
frm.crearettangoli()

La funzione crearettangoli di gappnew crea una serie di panellini colorati in un contenitore Panel e, prima di crearli, elimina quelli che ci sono con questo codice:

Me.Panel1.Controls.Clear()
For Each p As Control In Panel1.Controls
p.Dispose()
Next
Ho controllato il codice delle form chiamate, per ogni oggetto SqlConnection o SqlCommand creato via codice viene eseguito il dispose; tutta la documentazione che ho letto dice che ci deve essere qualcosa che resta appeso e che non permette al GC di eliminare gli oggetti completamente; infatti da Gestione Attività vedo che aprendo e chiudendo una form la quantità di Handle, Thread e Oggetti GDI non ritorna agli stessi valori che c'erano prima di aprirla.
Dove sbaglio? Qualcuno può darmi qualche suggerimento?

Ringrazio anticipatamente


 


Viewing all 2212 articles
Browse latest View live