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

Funzione dentro un metodo

$
0
0

Ciao a tutti,

intanto grazie per il tempo che dedicherete a leggere queste mie (stupidissime) righe.

Premetto che sono un neofita e sto imparando a programmare (da un paio di mesi), e sto iniziando a scontrarmi con i primi problemi. 

Devo per esercizio portare una funzione in un metodo. Ovviamente questa funzione chiama all'interno altre funzioni. Io per non saper ne leggere ne scrivere avevo pensato di crearmi il mio bel metodo, e all'interno dichiarare le funzioni che poi il metodo chiamerà. Problemi di globalità non ne ho perchè resterebbe tutto locale.

Ma mi dice che non si può dichiarare una funzione dentro un metodo.

Volevo chiedervi il perchè e se avevate delle soluzioni,

grazie mille.


COPIARE TABELLE ACCESS

$
0
0

Uso Visual Basic 2005

Voglio creare una nuova tabella con struttura identica a quella di una esistente, trasferendone i dati, e uso le seguemti istruzioni:

imports System.Data.Oledb

Dim myConn as New OledConnection(ConnectionString)        

Dim myCommand AS STRING= "SELECT "& OldTableName & ".* INTO "& NewTableName & " FROM "& OldTableName

Dim myCmd as New OledbCommand(myCommand, myConn)

myCmd.ExecuteNoQuery

Tutto funziona bene solamente che i vincoli di campo della Tabella precedente (Chiave primaria, campi Not Null, Unique ecc...) non me li ritrovo nella nuova tabella.

Qualcuno sa dirmi come devo fare?

,

vba :inserimento nuova riga copita

$
0
0

Salve a tutti,

ho un foglio excel con dati e formule;vorrei copiare un riga del foglio con tutte le formule e convalide nella riga successiva senza dati;

Function InserisciRigaSullaSuccesivaConDatiFormattati(pEliminaSelezione As Boolean, pAttivaCellaColonna As Long) As Long
    
    Dim lRange As Range, riga As Long, lWorkSheet As Excel.Worksheet
    Dim tmp As String, tmp2 As String
    Dim tmp11 As Single
    
    
    riga = Application.ActiveCell.Row
    Set lWorkSheet = Application.ActiveSheet
    
    If 1 = 1 Then
        With lWorkSheet
            Set lRange = .Rows(Trim$(Str$(riga + 1)) & ":"& Trim$(Str$(riga + 1)))
            lRange.Insert xlShiftDown
            .Rows(Trim$(Str$(riga)) & ":"& Trim$(Str$(riga))).Copy
            Set lRange = .Rows(Trim$(Str$(riga + 1)) & ":"& Trim$(Str$(riga + 1)))
            'dovrebbe incollare solo formule formanti numeri,invece copi tutto
            lRange.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            
            If pEliminaSelezione = True Then
                Application.CutCopyMode = False
            End If
            
            If pAttivaCellaColonna > 0 Then
                .Cells(riga + 1, pAttivaCellaColonna).Select
            End If
        End With
    End If
    
    
    
    InserisciRigaSullaSuccesivaConDatiFormattati = riga


End Function

 

con l'opzione xlPasteFormulasAndNumberFormats dovrebbe copiare solo le formule,ma invece copia tutto

 Stefano


 

 

cambio compliazione da x86 ad x64

$
0
0

Ciao ragazzi, ho la necessità di modificare la mia applicazione da x86 ad x64.

Senza cambiare nulla.

Basta cambiare l'exe od è necessario modificare le dipendenze nel setup e ridistribuire tutto?

.Grazie

Sebastiano

 

UserControl non funziona

$
0
0
Ciao a tutti,
ho cominciato da poco a scrivere con VB2010 per fare degli addin per dei cad, conosco la programmazione ad oggetti (sviluppo con Xojo).
Il problema che ho è che ho creato un UserControl con dentro diversi controlli ecc, quando lo metto all'interno della form (una vola che riapro la form) mi esce un messaggio di errore:
The designer cannot process the code at line 44: Me.EditorProprietàDiSistema1 = New JV_Addin.EditorProprietàDiSistema() The code within the method 'InitializeComponent' is generated by the designer and should not be manually modified. Please remove any changes and try opening the designer again.
Sono entrato all'interno dell'Inizializzazione della form (codice generato da VB) a mettere global. davanti alla dichiarazione (come consigliato dagli aiuti) ho fatto anche altre prove, ho cercato invano per almeno 4 ore e non sono arrivato a nulla.
Non ci sono errori di codice fino a che non inserisco il controllo nella form.
Dal link sotto potete scaricare qualche screenshot
https://www.dropbox.com/s/4pq7p8wztcxugi4/Cattura%202.zip?dl=0

Ringrazio anticipatamente per ogni informazione

 

Newtonsoft.Json.dll Passando da x86 ad x64

$
0
0

Ciao Ragazzi, passando un mio progetto da x86 ad x64 appare nella cartella release un file denominato Newtonsoft.Json.dll.

Non ho idea cosa sia.

Utilizzando il trova dipendenze di cyberinstall il file sembra da distribuire.

DA una ricerca sembra una dll di un software a pagamento di monitoring.

Qualcuno conosce l'importanza di questo file?

Saluti

Sebastiano Floridia

Datagrid salvataggio larghezza colonne

$
0
0

Voglio permettere all'utente di salvare la larghezza delle colonne dei vari datagrid del programma.

In una classe ho creato un metodo SalvaLarghezzaColonneDgv a cui passo un valore per capire di quale dgv si tratta. Paso anche il nome del pc, in modo da distinguere le varie risoluzioni.

Vorrei passare tutte le colonne (solo le colonne e non tutto il dgv), ma come faccio?

Un consiglio, memorizzo le informazioni in un file xml o nel database in formato xml?

Connessione SSH ad Mysql in hosting

$
0
0

Salve

ho necessità di collegarmi al db mysql in hosting. Dovrei utilizzare la connessione SSH... ma non ho idea di come scrivere la stringa di connessione in C#...

Mi aiutereste?


Scorrere datagridview con frecce di direzione

$
0
0

Allora: ho un datagrid con n righe, una texbox che utilizzo per scorrere le righe del dgv.

Quindi rimanendo all'interno della textbox, scorro avanti e indietro (fraccia giù/s&ugrave le righe del dgv.

Fin qui tutto ok, il problema nasce quando passo alla riga successiva l'ultima visibile.

Sul dgv sono visibili 10 righe e caricate 1.000, quando passo alla riga 11, il focus c'è, ma non è visibile, il dgv non scorre.

Queto è il codice che utilizzo per selezionare la riga e funziona:
Private Sub txtTest_KeyDown(sender As Object, e As KeyEventArgs) Handles txtTest.KeyDown 

'codice

'.....

dgvTest.Rows(_currentRow).Selected = True

End Sub

 

Come aggiorno la vista del dgv?

DataGridViewComboBoxColumn

$
0
0

 

Salve,

 

 in un DataGridView ho inserito in una colonna una ComboBox con due scelte, 'ciccio e franci' nel form c'è  una CheckBox se la "clicco" mi deve mettere ciccio nella Colonna.

 

Ho usato questo codice ma....

 

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
        If True Then
            DataGridView1.(Column1) = "ciccio"
        End If

 

Nella parentesi, prima di Column1, mi compare una sottolineatura in rosso (ERRORE) nella casella errori - è riportato:
Errore BC30203 È previsto un identificatore. 

 

Grazie in anticipo per l'aiuto

 

PS.: sto studiando....Signor Diego Cattaruzza [exMVP]
 

 

 

Che cosa è il GAC

$
0
0

Ciao Ragazzi, in merito ai quesiti precedenti sul cambio del reference di dll, ho avuto risposta dal forum degli sviluppatori del software madre che dice che:

Non è importante dove è installato il software e le relative dll perchè tramite GAC vengono allineati i percorsi delle dll ed il software deve funzionare lo stesso.

Delle serie. abbandona quella strada perchè non serve a niente.

Immagico che il GAC è un database delle librerie installare nel pc che le rende tutterintracciabili e riallineabile.

Cosa ne pensate?

 

Saluti e Grazie

Sebastiano.

 

 

 

SerialPort non funziona da tastiera

$
0
0

Buonaseravorrei esporre il mio problema

ho creato una piccolo programma  in visualbasic 2010 con un paio di pulsanti

e lo collegata tramite la seriale con Arduino, una scheda

elettronica colla quale cerco di comunicare  attraverso la Serialport da premettere che

non ho tanta conoscenza di Visualbasic

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

Mando char ---a--- quando digito pulsante in VB

Private Sub button__MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles button.MouseDown

SerialPort1.Write("a")

End Sub

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

Mando char ---A--- quando lascio pulsante

Private Sub button__MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles button.MouseUp

SerialPort1.Write("A")

End Sub

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

in questo modo tutto funziona a meraviglia

solo quando digito tasto tastiera esempio sotto

non mi funziona bene mi spiego quando digito tasto tastiera

la char –a-- nella seriale viene avvertita quando

invece lascio tasto tastiera avviene che alcune volte

rimane incantato char –a-- tipo che visualbasic

non avverte che ho lasciato tasto tastiera

che mi dovrebbe  dare char---A--

pero alcune volte funziona ma raramente forse a che

fare che in ascolto ce un timer che legge i dati della seriale

pero il timer credo che sia solo per il SerialPort1.ReadExisting non so:

forse qualcuno mi puo dare un aiuto dove sbaglio

grazie

esempio con tastiera:

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

If e.KeyCode = Keys.D1 Then

SerialPort1.Write("a")

End If

End Sub

Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp

If e.KeyCode = Keys.D1 Then

SerialPort1.Write("A")

End If

End Sub

Trasformare String() in List(Of String)

$
0
0
Ciao a tutti,
c'è un modo semplice per trasformare un array di string in una Lista ??

Utilizzo questo codice che posto di seguito, ma volevo sapere se si può fare in una sola riga:

        Dim Vs = System.IO.Directory.GetLogicalDrives
        Dim Lst As New List(Of String)
        For Each Drv In Vs
            Lst.Add(Drv)
        Next
        Return Lst

Il problema è che sto usando Framework 2.0

Grazie
Sergio

errore con un evento

$
0
0

Ciao Ragazzi.

Il software funziona su tutte le installazioni 

Ho un problema solo su una macchina.  e sono riuscito a ricostruire l'errore sul mio server.

Secondo il forum del software di riferimento, il problema è dovuto a carenza di autorizzazioni del sistema operativo. (esegui come amministratore non sortisce effetto).

 

Snippet
Public myEvent As Tekla.Structures.Model.Events = New Events() 

non riesco a venirne a capo.

Cosa ne pensate?

Saluti

Sebastiano

Resize controlli

$
0
0

buongiorno a tutti. sto litigando con il resize di un form e dei controlli contenuti. Ho un form con due GroupBox che occupano ciascuna metà form. quando le ho inserite le ho posizionate con l'ausilio delle linette azzurre che credo indichino la distanza standard tra i controlli.

Uso VB2008 con .NET 3.5

Il goal è quello di avere il resize automatico dei controlli quando le dimensioni del form vengono modificate.

ho cominciato a giocare con la proprietà Anchor mettendo entrambi i groupbox con Top, Left, Right, Bottom attivi. In questa situazione i groupbox si sovrappongono.

Allora ho provato a levare, da Anchor, il Right da una e il Left dall'altra. Qui va meglio ma mi resta un grosso spazio tra le due quando ingrandisco.

Ho provato a usare anche i Panel ma il risultato è stato uguale.

Qualcuno mi sa dare qualche dritta su come gestire il resize in modo semplice e possibilmente fatto direttamente dal .NET senza dover scrivere codice? Speravo di trovarmi meglio che con VB6 ma mi pare che la situazione sia la stessa...

Ovviamente è una situazione banale di test perchè poi l'applicazione reale è ben più complicata come numero di controlli ma se già così non riesco a farla andare ho poche speranze sul più complicato...

Mi sarebbe di grande aiuto anche qualche book dove viene spiegata bene la tecnica da usare per queste operazioni.

Grazie

Stefano

 


Nuovo progetto, che versione di Framework usare ??

$
0
0

ciao a tutti,

ho un programma scritto in VB6 che vendo da ormai quasi 10 anni

ha un costo molto basso (intorno ai 3-4 euro) ed è destinato ad un tipo di clientela con conoscenze informatiche uguali a zero

Lo installano e lo usano. Punto. Non posso chiedergli nulla di più.

Con VB6 nessun problema, nel file di installazione c'è tutto, anche la libreria MSVBVM60.DLL che si occupa di tutto.

Ora vorrei riscrivere il programma in VB.NET, ma non posso assolutamente chiedere all'utente di installare il .NET Framework, e quindi volevo capire quale versione di .NET Framework è già installata sulla maggior parte dei PC in modo da dover evitare di installare il Framework, perchè in quel caso perderei sicuramente la vendita.

Windows XP, Windows Vista, Windows 7, 8.1, 10, eccetera (cioè tutti escludendo Windows 98), hanno già un Framework installato di default ??

Stavo pensando (visto che non ho bisogno di cose particolari) di sviluppare il tutto con il Framework 2.0, ma la domanda è se un PC ha installato solamente il 3.5 (o il 4), il programma funziona lo stesso o deve esserci per forza installato il 2.0 ??

Grazie per la risposta

Sergio

Stampa etichette su foglio a4 report rldc

$
0
0

Buon Giorno,

Quello che vorrei fare, è ottenere un foglio a4 con molte etichette (utilizzando i report rldc. Ognuna di esse contiene dei dati ben precisi relativi a dei record in un datatable. 

Scartando l'idea di aggiungere un infinità di parametri ad un unico report, come potrei fare? utilizzando i sottoreport? 


Vi ringrazio per le risposte!

[vb2015] Entity Framework e Sql Compact 3.5

$
0
0

Salve a tutti sto avendo dei problemi nel eseguire un aggiornamento di un mio vecchio programma.

Il programma è fatto in wpf e si appoggia attraverso Entity Framework ad un database Sql Compact 3.5.

A suo tempo quando fu fatto il programma si utilzzò il ModelFirst cioè si creò il modello ed utilizzando gli strumenti di Visual Studio si generò il database SqlCompact 3.5.

Tutto funzionava perfettamente in quanto nell'istallazione del programma si installava il database in una cartella dell'utente e la stringa di connessione veniva generata in base all'utente Windows...

 

Ora il problema che si presenta è quello di voler aggiungere delle tabelle al database. Sfruttando lo stesso sistema aggiungendole direttamente nel Modello e poi rigenerando il database.

Il problema che quando nel generare il databese tra le sorgenti utilizzabilie non trovo più Sql Server Compact 3.5

 Torvo Mysql, Sql Server, File di Sql Server ma Sql Compact 3.5 non lo trovo più e non trovo nemmeno Sql Compact 4.0.

 Il fatto è che se volessi modificare direttamente il database atraverso il Tool di Sql Compact poi se voglio fare la connessione al database tramite entity framework comunque non trovo il provider di Sql Server Compact 3.5 ne 4.0

 

Ho provato ad installare tutto quello che riguarda il sql server compact ma niente da fare non lo trovo. Premetto che da quando è stato creato il programma il pc è stato formattato ed è passato da Visual studio 2010 a Visual studio 2013 e poi 2015...

Avete qualche suggerimento da darmi???

Vi sarei infinitamente grato.

BackGroundWorker

$
0
0

Come da consiglio di Diego ho studiato e implementato il BackgroundWorker. E' sostanzialmente semplice e poi su internet si trovano molti esempi su come fare. L'implementazione è andata a buon fine e l'applicazione funziona. Ho due domande:

1) Nella vecchia versione dell'applicazione (cioè unico thread senza BGW) mettevo il cursore a Wait prima di lanciare la parte "lunga" e al termine di questa lo rimettevo a Default. Ora ho messo Cursor.Current=Cursors.WaitCursor nella routine che lancia  bgw.RunWorkerAsync(Arguments) e il Cursor.Current=Cursors.Default nell'evento bgw_RunWorkerCompleted ma non funziona; il cursore non diventa wait nemmeno per un momento. Esiste qualche barbatrucco per farlo funzionare?

2) La documentazione del BGW dice che non si deve fare riferimento ai controlli all'interno della procedura che usa il thread separato; nelle routine (di libreria DLL) che uso nell'applicazione per la gestione dell'estrazione dati dal DB ho messo delle MessageBox per visualizzare eventuali errori che si possono verificare sul DB. La comparsa della MessageBox durante l'esecuzione in background è possibile oppure anche questa può dare l'errore di IllegalThread...? L'errore viene comunque gestito e torna indietro sino a dove mi interessa farlo arrivare quindi posso cancellare l'operazione in background con il parametro dedicato di BGW ma la MessageBox resta a livello di libreria.

Grazie per tutti i chiarimenti

Stefano

TabControl senza i tab

$
0
0

Ciao a tutti,

avrei necessità di avere quello che su Xojo si chiama PagePanel, sarebbe un TabControl senza i tab. Per la navigazione in runtime si dice quale pagina visualizzare e come nel tab control vengono mostrati solo i controlli di quella pagina.

C'è un controllo così che voi sappiate? Oppure si possono togliere i tab ad un tab control?

 

Grazie mille

Viewing all 2212 articles
Browse latest View live