sabato 4 giugno 2011

VB.net: problemi tra OLEDB.4.0 e Windows 7 64 bit

Se si cambia sistema operativo e si passa a Windows 7 64 bit è possibile riscontrare un errore nella lettura dei database con Microsoft.Jet.OLEDB.4.0. Infatti il VB.net genera il seguente messaggio di errore:
"The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine."
L’errore è abbastanza misterioso se si pensa che Windows 7 dovrebbe essere più performante dei vecchi sistemi operativi a 32 bit. E’ comunque possibile risolverlo chiedendo al compilatore di compilare il programma in modilità x86. Per fare ciò bisogna cercare nel browser di Visual Studio la voce My Project, andare nella scheda Compilazione, cliccare su Opzioni di compilazioni avanzate e forzare la CPU di destinazione a x86.

sabato 19 febbraio 2011

SetXData in Vb.Net

Nel passaggio dalla programmazione in VBA a quella in Vb.Net è possibile incontrare un errore in questa istruzione:

Object.SetXData(Tipo, Codice)

se la variabile Tipo è dichiarata Integer.
Cambiando la definizione della variabile Tipo ad Int16 l’errore scompare. Questo accade perché nel passaggio tra VBA e .Net, come è noto, le variabili Integer passano dai 16 bit ai 32 del .Net e nella riscrittura della classe SetXData si sono probabilmente dimenticati di questo passaggio.

venerdì 7 gennaio 2011

VB.net: Creare la variabile thisdrawing con i suoi eventi

Nel passaggio dal VBA al VB.NET per Autocad è fondamentale ricreare la variabile “thisdrawing” con tutti i suoi eventi (tipo EndCommand, Activate ecc.).
Ecco un modo per farlo:
 
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
 
Public Class Esempio
Dim AcadApp As Autodesk.AutoCAD.Interop.AcadApplication = GetObject_
(, "Autocad.Application")
Public WithEvents ThisDrawing As_
Autodesk.AutoCAD.Interop.AcadDocument = AcadApp.ActiveDocument

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As_
System.EventArgs) Handles Button1.Click
 Dim pt As Object
 Dim pt1 As Object
 Me.Visible = False
 pt = ThisDrawing.Utility.GetPoint(, "Seleziona il primo punto:")
 pt1 = ThisDrawing.Utility.GetPoint(pt, "Seleziona il secondo punto:")
 ThisDrawing.ModelSpace.AddLine(pt, pt1)
 MessageBox.Show("Linea disegnata")
 Me.Visible = True
End Sub
Private Sub ThisDrawing_EndCommand(ByVal CommandName As String)_
Handles ThisDrawing.EndCommand
 MessageBox.Show("Fine comando")
 End Sub
End Class