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

Intestazione colonne listbox

$
0
0

Ciao a tutti,

come al solito, dopo aver letto e riletto in giro per internet non riesco a risolvere un problema  su una listbox a 3 colonne creata in una form temporanea,

il problema e che non riesco a mettere le intestazione di colonna,

ma forse il ciò per come ho fatto io non si può fare.

chiedo aiuto posto il codice

Public Function form_temp_ferie()

Dim FormTemp As Object
Dim NewFrame As MSForms.Frame
Dim NewButton As MSForms.CommandButton
Dim NewListBox As MSForms.ListBox
Dim NewLabel As MSForms.Label
 
Application.VBE.MainWindow.Visible = False

Set FormTemp = Application.VBE.ActiveVBProject.VBComponents.Add(3)

'crea User Form
With FormTemp
    .Properties("Caption") = "Riepilogo Ferie per Mese"
    .Properties("Width") = 400
    .Properties("Height") = 270
End With

'crea ListBox
Set NewListBox = FormTemp.Designer.Controls.Add("Forms.listbox.1")
With NewListBox
    .name = "lstb_1"
    .Top = 25
    .Left = 20
    .width = 215
    .height = 140
    .Font.name = "Times New Roman"
    .Font.Size = 10

End With


'creazione pulsante
Set NewButton = FormTemp.Designer.Controls.Add("Forms.commandbutton.1")
With NewButton
    .name = "command_1"
    .Caption = "Chiudi"
    .Accelerator = "M"
    .Top = 102
    .Left = 306
    .width = 66
    .height = 20
    .Font.name = "Times New Roman"
    .Font.Size = 10
End With

'crea label
Set NewLabel = FormTemp.Designer.Controls.Add("Forms.label.1")
With NewLabel
    .name = "lbl"
     .Caption = "Selezionare una riga per avere più dettagli"
    .Top = 10
    .Left = 40
    .width = 200
    .height = 15
    .Font.name = "Times New Roman"
    .Font.Size = 10
 
End With
'inserire righe per catturare la scelta "

' config modulo UserForm_Initialize
FormTemp.CodeModule.InsertLines 8, "Private Sub UserForm_Initialize()"
FormTemp.CodeModule.InsertLines 11, "Dim rs As DAO.Recordset "
FormTemp.CodeModule.InsertLines 12, "Dim sql As String "
FormTemp.CodeModule.InsertLines 13, "Dim i As Integer "
FormTemp.CodeModule.InsertLines 14, "i=0  "
FormTemp.CodeModule.InsertLines 15, "sql = ""SELECT presenza_lavorativa.presenze, Month([iddata]) AS Mese, Count(presenza_lavorativa.presenze) AS Totale FROM presenza_lavorativa GROUP BY presenza_lavorativa.presenze, Month([iddata]), presenza_lavorativa.iduser, Year([iddata]) HAVING (((presenza_lavorativa.presenze)='CO' Or (presenza_lavorativa.presenze)='FS') AND ((presenza_lavorativa.iduser)=utente_inserimento_presenze()) AND ((Year([iddata]))=cambio_anno())) ORDER BY presenza_lavorativa.presenze, Month([iddata]);"" "
FormTemp.CodeModule.InsertLines 16, "Set rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset, dbReadOnly)"
FormTemp.CodeModule.InsertLines 17, "With Me.lstb_1  "
FormTemp.CodeModule.InsertLines 18, "   .ColumnCount = 3 "
FormTemp.CodeModule.InsertLines 19, "   .ColumnWidths = ""70;70;70"""
FormTemp.CodeModule.InsertLines 19, "   .ColumnHeads = True "
FormTemp.CodeModule.InsertLines 20, "   .AddItem "

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

FormTemp.CodeModule.InsertLines 21, "   .List(i, 0) = ""Presenza"""' vorrei usare come intestazione colonna 1

FormTemp.CodeModule.InsertLines 22, "   .List(i, 1) = ""Mese"""' vorrei usare come intestazione colonna 2
 
FormTemp.CodeModule.InsertLines 23, "   .List(i, 2) = ""Totale""" ' vorrei usare come intestazione colonna 3

----------------------------------------------------------------------------------------
FormTemp.CodeModule.InsertLines 24, "i = i + 1" 

FormTemp.CodeModule.InsertLines 25, "Do While Not rs.EOF "
FormTemp.CodeModule.InsertLines 26, "   .AddItem "
FormTemp.CodeModule.InsertLines 27, "   .List(i, 0) = rs!presenze "
FormTemp.CodeModule.InsertLines 28, "   .List(i, 1) = rs!mese "
FormTemp.CodeModule.InsertLines 29, "   .List(i, 2) = rs!Totale "
FormTemp.CodeModule.InsertLines 30, "i = i + 1 "
FormTemp.CodeModule.InsertLines 31, "rs.MoveNext  "
FormTemp.CodeModule.InsertLines 32, "Loop  "
FormTemp.CodeModule.InsertLines 33, "End With  "
FormTemp.CodeModule.InsertLines 34, "rs.Close  "
FormTemp.CodeModule.InsertLines 35, "Set rs = Nothing  "
FormTemp.CodeModule.InsertLines 36, "End Sub  "
FormTemp.CodeModule.InsertLines 37, " "

'config button
FormTemp.CodeModule.InsertLines 40, "Private Sub command_1_Click()"
FormTemp.CodeModule.InsertLines 41, ""
FormTemp.CodeModule.InsertLines 42, " Unload Me"
FormTemp.CodeModule.InsertLines 43, " "
FormTemp.CodeModule.InsertLines 44, "End Sub"
'display form
VBA.UserForms.Add(FormTemp.name).Show

Application.VBE.ActiveVBProject.VBComponents.Remove FormTemp

Application.VBE.MainWindow.Visible = True

End Function


spero di avermi spiegato.

Grazie.

Ciao...


Problema in lettura excel con oledb (mi salta le prime righe...)

$
0
0

Buongiorno a tutti, sto cercando di sviluppare una procedura che da un foglio excel mi vada ad alimentare un db in mysql.

Per il momento sto "spattacando" un po con l'accesso ad excel tramite oledb, ma l'oledbdataadapter mi restituisce le righe del mio foglio a partire dalla riga 3.

Sto testando questo codice:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        'prova lettura excel
        Dim DS As System.Data.DataSet
        Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
        Dim MyConnection As System.Data.OleDb.OleDbConnection
        Dim MySchema As DataTable
        Dim MyNomeTabella As String
        Dim FileName As String = "C:\APPO\ciccia.xlsx"
        Dim i As Integer
        Dim Flag As Boolean = False
        Dim CodIss As Integer = 0
        MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source="& FileName & "; Extended Properties=Excel 12.0;")

        Try
            MyConnection.Open()
            MySchema = MyConnection.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, Nothing)
            MyNomeTabella = MySchema.Rows(i).Item("TABLE_NAME").ToString
            MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from ["& MyNomeTabella & "]", MyConnection)
            DS = New System.Data.DataSet()
            Try
                MyCommand.Fill(DS)
                '                MsgBox(DS.Tables(0).Rows.Count.ToString)

                For i = 0 To DS.Tables(0).Rows.Count
                    If Flag Then 'siam sul secondo record dell'anagrafica
                       Flag = False 'aggiungere valorizzazione seconda parte record ed insert in mysql

                    End If
                    Try
                        CodIss = CLng(DS.Tables(0).Rows(i).Item(0))
                    Catch ex As Exception
                        CodIss = 0
                    End Try
                    If CodIss > 0 Then 'codice iss
                        Flag = True 'aggiungere valorizzazione prima parte record
                    End If
                Next i
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        Catch ex As Exception

        End Try


        MyConnection.Close()
    End Sub
End Class

Il ds.tables(0).rows(0) corrisponde sempre alla 3a riga del foglio excel, in verità per quello che devo fare le prime 2 righe potrei anche ignorarle, ma ho come l'idea sto trascurando qualcosa d'importante...

Modificare primo byte di un file

$
0
0
Dovrei modificare il primo byte di un file da 254 a 3 (valori decimali)
Pensavo di usare un filestream, un BinaryReader e un BinaryWriter
In questo modo riesco a leggere il primo Byte, ma poi come faccio a
cancellarlo e scrivere al suo posto il nuovo valore?

       
Using fs As FileStream = New FileStream(nFileName, FileMode.Open, FileAccess.ReadWrite)
            
Using br As New BinaryReader(fs)
dim _byte as byte = br.readByte
                if _byte
<> 3 then
.....
end if
            
End Using
        
End Using
Il mio problema è che avendo a che fare con file grandi (qualche decina di mega, non volevo scrivere un nuovo file cambiando il primo byte, ma leggere il primo byte e nel caso sia diverso da 3 sostituirlo con 3 e chiudere salvandolo il file

calcolare coordinate x e y rispetto al form

$
0
0
Ciao a tutti,

in un mio form ho un GroupBox posizionato (ad esempio) alle coordinate x=10 e y=20
Dentro questo Groupbox metto un TextBox posizionato (ad esempio) alle coordinate x=30 e y=40

Come posso ricavarmi le coordinate del TextBox relative al punto 0,0 del form ??

Praticamente, in fase di runtime, devo posizionare proprio a fianco del textbox un oggetto Calendar, ma devo prima calcolarmi le coordinate del TextBox.

C'è una proprietà o un metodo del TextBox che mi ritorni le coordinate rispetto al Form ?? (cioè che mi ricavi x=40 e y=60)

Grazie
Sergio

Modificare valore di una cella DGV al cariacamento dei dati

$
0
0

Ho una datagridview bindata a una datatable.

Quando effettuo il binding (e solo in quel momento) vorrei modificare alcune celle

Prevalentemente sono date che provengono da as400 in formato yyMMdd o yyyyMMdd ceh vorrei visualizzare in formato data (dd/MM/yyyy)

Io ho provato a creare una nuova colonna, rendere invisibile quella originale e riempirla al caricamento con un valore che calcolo nell'evento RowPrePaint

Il problema è che il RowPrePaint mi viene attivato ogni volta che si riempe una cella della riga, e quindi quel calcolo mi viene fatto inutilmente x volte per ogni riga

Non trovo altri eventi della datagridview che mi permetta di gestire questa cosa. Ho provato anche con le colonne calcolate, ma non ne sono venuto fuori perchè dovrei associare alla cella una funzione e non credo sia possibile.

Qualche suggerimento ?

ADODB.RecordSet

$
0
0

Buongiorno a tutti,

tanto per cominciare mi presento in quanto nuovo iscritto.

Sono Valerio e lavoro come disegnatore presso un'azienda di costruzione macchine alimentari, qui mi occupo non solo di disegni ma anche di sviluppare qualche applicazione, questo in quanto conosco la programmazione. Come linguaggio fino ad oggi ho usato Xojo e programmato per windows e mac, poi ho usato altri linguaggi di scripting simili al C.

Veniamo al problema che ho. In ditta si lavora con Autodesk Inventor che permette di programmare su VBA, usando questo linguaggio devo fare delle automazioni per velocizzare il lavoro mio e dei colleghi.

Il primo problema che devo affrontare adesso è l'utilizzo di MySQL, ho installato il database in locale e tramite codice VBA (che metterò sotto) mi collego e provo a leggere dei record, fino qui bene se non per il fatto che il record quando va a leggere un campo nel db che è una stringa mi restituisce un'array che contiene i valori ascii dei caratteri invece che la stringa scritta nel database.

Ho cercato come fare a leggere il valore di stringa ma non sono riuscito a trovare nulla (anche perchè il tempo a disposizione è poco, faccio queste cose quando ho momenti liberi), potrei ciclare l'array ed ottenere la stringa solo che mi sembra assurdo che non si possa leggere il valore in formato stringa.

Potete aiutarmi?

Chiedo scusa ma come approccio e linguaggio è simile a Xojo, solo simile in quanto su Xojo se devo leggere il valore gli dico in che formato lo voglio esempio Rs.Field("prova").StringValue e lui mi da una stringa.

Il codice (solo un test) è questo:

Dim oConn As ADODB.Connection
Private Sub ConnectDB()
    c = "DRIVER={MySQL ODBC 5.3 Unicode Driver};"& _
        "SERVER=127.0.0.1;"& _
        "DATABASE=gestionale matricole;"& _
        "USER=root;"& _
        "PASSWORD=valerio;"& _
        "Option=3"
    Set oConn = New ADODB.Connection
    oConn.Open c
    Beep
    
    Dim RS As New ADODB.Recordset
    RS.Open "select * from utenti", c
    While (Not RS.EOF)
        For i = 0 To RS.Fields.Count - 1
            Set rec = New ADODB.Record
            rec.Open RS
            Dim a As String
            a = CStr(RS.Fields(0))
            'Debug.Print a
            Debug.Print rec.Fields(i).Value
        Next
        RS.MoveNext
    Wend
    RS.Close

    
End Sub



Grazie in anticipo per le risposte

[VB2015] Carattere in più in una stringa

$
0
0

Salve, ho in una Form vari textbox con dei numeri inseriti.... devo ricomporre una variabile testualeo tutti il Text di tutti i textbox e fra un testo e l'altro devo inserire un Punto e alla fine un cancelletto...

solo che invece di inserire all'inizio prima il testo mi inserisce il punto e io voglio che il primo carattere della stringa sia il testo del primo textbox e non il punto, questo è il codice:

Dim f AsString = ""
        ForEach t AsTextBoxInMe.Controls.OfType(OfTextBox)()
            f &= t.Text & "."c
        Next
        f &= "#"

 come mai mi  risulta all'inizio della stringa il Punto ?

prima = 0301067209881233145

Dopo = .0301067209881233145.#

[VB2015] Selezionare testo in TextBox da ListBox

$
0
0

Salve, dovrei selezionare il testo contenuto in varie textbox, selezionandolo da una listbox, ma non mi riesce, tutti gli oggetti sono stati creati da codice è forse quello il problema ?

PrivateSub LBSelezione_Click(sender As System.Object, e As System.EventArgs)
        ForEach t AsTextBoxInMe.Controls.OfType(OfTextBox)()
            Dim TX AsString = DirectCast(sender, ListBox).SelectedItem.ToString.Replace(".", "")

            If t.Text.Contains(TX) Then
                t.SelectAll()
            EndIf
        Next
    EndSub

e questa è il promemoria.....

Free Image Hosting at FunkyIMG.com


Nella listbox a DX seleziono il (12.34) ma non viene trovato/selezionato in nessuna textbox

Come dovrei fare per far avvenire ciò' ?


Aggiornare un controllo ListView con un file .txt

$
0
0

Partendo da un menu iniziale con uno ToolStrip e diversi pulsanti (Inserimento, Modifica, ecc.) ho previsto di utilizzare Form differenti per ogni funzionalità.

All'avvio del programma, nel Form iniziale con la procedura frmMenuIniziale leggo un file di testo.txt per aggiornare un controllo ListView con i dati degli Items previsti in questo controllo (Principale e n Subitems).

Tutto OK.

Cliccando il pulsante cmdInserisci, visualizzo quindi un nuovo Form dedicato all'inserimento dei dati ed anche questo Form ha un controllo ListView che si aggiorna via via che, con un'apposita maschera, eseguo il data entry.

In uscita, eseguo il salvataggio dei dati con un oggetto StreamWriter  e con i comandi Me.Hide() e  frmMenuIniziale.Show() ritorno al menu iniziale.

Il mio problema è che, quando ritorno al menu iniziale, i dati aggiunti non vengono visualizzati nella ListView, come se la procedura frmMenuIniziale_Load non venisse eseguita.

Se invece chiudo l'applicazione e la riavvio i nuovi dati inseriti precedentemente vengono visualizzati.

Per favore, c'è qualcuno che mi possa far comprendere quale sia l'errore e come possa porre rimedio a questo inconveniente?

Grazie per l'aiuto.

windows10

$
0
0
In riferimento a:
http://www.visual-basic.it/Forum/tabid/151/aft/42606/Default.aspx#152920

Continuo a porre le mie domande qui 😃

Fermo restando che il SO del mio PC e' Windows8.1 e non posso installare Windows 10, posso installare vs2015 e programmare Windows Phone 10?
Per installare vs2015 sarebbe meglio disinstallare vs2013?

Sostituzione di CarriageReturn con spazio

$
0
0

Salve a tutti, sto utilizzando una stringa quando sorge un problema: nella stringa sono presenti dei CarriageReturn ("Accapo") e allora ho creato una piccola funzione che li sostituisce con uno spazio:

    Public Function Rep(ByVal S As StringAs String
        
Dim T As String = ""
        
For Each C As Char In S
            
If C = Chr(13) Then
                T = T & 
" "
            
Else
                T = T & C
            
End If
        
Next
        T = Replace(T, 
"  "" ")
        
Return T
    
End Function
Nel caso alla fine risultino due spazi dopo la successiva sostituzione allora li sostituisce con uno spazio soltanto. Il problema è che questo codice non vuole funzionare in nessuna maniera, c'è qualcuno che può aiutarmi a capire dove sto sbagliando? Grazie in anticipo

Barra elenco oggetti e metodi

$
0
0

Ho installa VS2015 community a casa, ma per qualche ragione non è disponibile la barra nella pagina del codice in cui si può selezionare gli oggetti presenti sulla form e i metodi ad esso associati.

Evidentemente ho qualche parametro non settao, ma non lo trovo. Qualcuno può darmi una dritta?

User Control New Style Windows Form

$
0
0

Salve a tutti,

sono passato da poco a visual net da vb6... quindi ancora faccio un sacco di fatica....

siccome non mi piace la grafica dei tradizionali form ho deciso di impostare la proprieta' FormBorderStyle a None e quindi ricrearmi la barra con l'icona, il titolo e i tre pulsanti riduci, ingrandisci e chiudi...


ho usato Controllo Utente .... dato le misure in altezza posizionato un piccolo panel con l'opzione sulle immagini a streech .... una label per inserirvi il titolo del form ,.. la cosi detta vecchia Caption per intenderci e i tre bottoni... per i bottoni ho usato il button classico di vb.net


sono riuscito a creare il codice per inserire il testo nella label ma non riesco a capire come devo fare per creare il bottone di scelta immagine da associare al panel e soprattutto cosa piu importante come fare ad avere le proprieta' click dei singoli tre bottoni...


c'e' qualcuno che ha voglia di darmi una mano ad implementare questo oggetto?

grazie ... aspetto riscontro di qualsiasi tipo... consigli ... suggerimenti etc etc

[VB2013] Datagridview Cell Keydown

$
0
0

Buongiorno,

avrei la necessità di sapere quale tasto è stato premuto in fase di editing di  una cella in una datagridview. Gli eventi Key... sono disponibili solo a livello di datagrid e non di cella.

 

Grazie

G.

Custom Context Menu

$
0
0

Ho creato un custom control (da designer) che attiva degli eventi al click sui pulsanti, l'ho ideato come un context menu ma ovviamente non ho la minima idea di come collegarlo a una RTB, dato che non compare nel box della proprietà ContextMenuStrip della RTB, si potrebbe fare in modo da farlo comparire in questo box per poi selezionarlo in modo che funzioni?

 

Grazie in anipo er le rispose


Comportamento strano Groupbox in VS2015

$
0
0

Ciao Ragazzi, sono in ambiente c# 2015 community.

ho sovrapposto 5 groupbox come contenitori di controlli uno sopra l'altro.

A secondo delle situazioni, faccio scomparire tutti i groupbox che non mi servono , tenendo visibile solo quello che mi interessa.

LI faccio scomparire così:


foreach (var gruppo in this.Controls) 
{
    if (gruppo.GetType() == typeof(GroupBox))      
{
        GroupBox cmb = (GroupBox)gruppo;  
       cmb.Visible = false;     }
 } 
e faccio comparire solo quello che mi serve:


switch (Convert.ToString(e.Node.Tag)) 
{     
case "N":
case "retta": 
      Grupporetta.Visible = true;  
       DisegnaRetta(); 
        break; 
    case "recav":    
     Grupporecav.Visible = true; 
etc......


C'è un comportamento strano.

Quando sovrappongo i vari groupbox è come se uno si incastonasse in un altro e in fase di esecuzione scompaiono.

Se gli sparpaglio nel form funziona, ma se li sovrappongo, alcuni li trovo dentro altri e non seguono la logica della visualizzazione.

C'è modo per evitare che succeda ciò?

Spero di essere stato chiaro.

Saluti

Sebastiano Floridia



VB 2008 - Windows report errore immagini

$
0
0
Buongiorno a tutti, sono alle prese con un Report di stampa e delle immagini.

Nel DB e quindi nella query che ho creato per il report c'è il path dell'immagine, nel report ho creato un controllo image e come sorgente ho messo External e value il campo della query che contiene il path dell'immagine ma mi restituisce sempre l'errore:
il report 'nomedelreport' contiene immagini esterne. Per questo report non è stata impostata la proprietà EnableExternalImages. Io ho provato a guardare da per tutto ma non trovo soluzione.
Grazie a tutti.

Modifica riga in file di testo

$
0
0
Ciao,
Devo modificare una riga in un file di testo contenente più righe, per il momento alla modifica della riga selezionata riscrivo tutto il file, mi sembra un po' assurdo.
Per scrivere e leggere il file utilizzo Windows.storage.fileio con questo metodo posso modificare solo una riga? E come?
Grazie

[VB2015] user control muovere Form

$
0
0

salve, secondo voi esiste un metodo per creare un user control, da attaccare a una form per muovere la form stessa, tipo l'istruzione di WPF (DragMove) visto che ancora qualcuno non ci ha pensato di crearla ? se si come dovrebbe essere strutturata ?

Stampa elenco variabili

$
0
0

 Buon giorno

Qualcuno mi può dire se è possibile mandare in stampa, (con Visual Basic 2015) 

l'elenco delle variabili utilizzate nel progetto ?

Se è possibile, quale procedura si può utilizzare.

Chiedo scusa se la domanda è un pò banale, ma non ho ancora molta dimestichezza con Visual Basic.

Ringrazio in anticipo chi mi vorrà aiutare.


Alessandro

Viewing all 2212 articles
Browse latest View live