Вы находитесь на странице: 1из 81

Visual Basic 2005 Conversion Toolkit

for Microsoft Dynamics SL


Release 7.0

3/2007

Copyright
Manual copyright 2007 Microsoft Corporation. All rights reserved.
Your right to copy this documentation is limited by copyright law and the terms of the
software license agreement. As the software licensee, you may make a reasonable
number of copies or printouts for your own use. Making unauthorized copies,
adaptations, compilations, or derivative works for commercial distribution is prohibited
and constitutes a punishable violation of the law.
Trademarks
Microsoft, Microsoft Dynamics, ActiveX, Excel, FRx, FrontPage, MapPoint, Outlook,
SharePoint, Visual Basic, Visual Studio, Windows, and Windows Server are either registered
trademarks or trademarks of Microsoft Corporation, FRx Software Corporation, or their
affiliates in the United States and/or other countries. FRx Software Corporation is a wholly
owned subsidiary of Microsoft Corporation. BIO and BIO Vue are trademarks or registered
trademarks of NexVue Analytics Corporation in the United States and/or other countries.
The names of actual companies and products mentioned herein may be trademarks or
registered marks - in the United States and/or other countries - of their respective owners.
The example companies, organizations, products, domain names, e-mail addresses,
logos, people, places, and events depicted herein are fictitious. No association with any
real company, organization, product, domain name, e-mail address, logo, person,
place, or event is intended or should be inferred.
Warranty disclaimer
Microsoft Corporation disclaims any warranty regarding the sample code contained in
this documentation, including the warranties of merchantability and fitness for a
particular purpose.
Limitation of liability
The content of this manual is furnished for informational use only, is subject to change
without notice, and should not be construed as a commitment by Microsoft Corporation.
Microsoft Corporation assumes no responsibility or liability for any errors or inaccuracies
that may appear in this manual. Neither Microsoft Corporation nor anyone else who has
been involved in the creation, production or delivery of this documentation shall be
liable for any indirect, incidental, special, exemplary or consequential damages,
including pero not limited to any loss of anticipated profit or benefits, resulting from the
use of this documentation or sample code.
License agreement
Use of this product is covered by a license agreement provided with the software
product. If you have any questions, please call the Customer Assistance Department at
800-456-0025 (in the United States or Canada) or +1-701-281-6500.
Publication Date
March 2007

Table of Contents

iii

Table of Contents
Introduccin

Quin Debera Leer Esto?.............................................................................................. 1


Qu Contiene? ............................................................................................................... 1
Convenciones de Documentacion ............................................................................... 2

Preparacin

Acerca de Microsoft Visual Basic 2005 .......................................................................... 3


Entrenamiento...................................................................................................... 3
Herramientas de Conversion........................................................................................... 3
Microsoft Dynamics SL 6.5 Code Inspector ...................................................... 3
Visual Basic Upgrade Tool .................................................................................. 3
VBTools Applications Upgrade Utility................................................................. 3
Microsoft Dynamics SL SDK Conversion Utility .................................................. 4
Setup .................................................................................................................................. 4
Necesidades de Preparacin del Ambiente de Desarrollo Visual Basic 6.0 4
Instalacin de Visual Studio 2005....................................................................... 4
Instalacin de Microsoft Dynamics SL 7.0......................................................... 4
Agregar Code Inspector al Men de Herramientas de Visual Studio .......... 4

Qu Ha Cambiado?

El Cambio hacia Managed Code ................................................................................. 7


Nuevos Archivos Fuente Requeridos................................................................. 7
Archivos Fuentes Retirados................................................................................. 7
Declaraciones Fuente Cambiadas de Ubicacin.......................................... 7
Binarios Cambiados de Ubicacin.................................................................... 7
Binarios Obsoletos................................................................................................ 7
Nuevas Carpetas................................................................................................. 8
Nuevos Assemblies .............................................................................................. 8
Requerimientos de Proyecto.............................................................................. 9
Nueva Plantilla de Proyecto para Aplicaciones ............................................. 9
Cambio de Sistema de Help............................................................................ 10
Interfaces de Programacin de la Aplicacin........................................................... 11
Cambios a APIs en los que se retir el Parmetro Length ........................... 11
Cambios en SAF Event Signature .................................................................... 13
Cambios de Control.......................................................................................... 13
Dealing con Array Assemblies.......................................................................... 14
Assembly de Arreglos SAF (SAF Array Assembly) ........................................... 15
Nuevo control de Men y Barra de Herramientas ........................................ 16
SolomonDataObject Class Reemplaza Header Files.................................... 16
Miembros de Clase SolomonDataObject ...................................................... 18

Utilitario de Conversin (Upgrade Utility)

21

Comprensin del Proceso de Conversin................................................................... 21


Lnea de Comandos VBTools Applications Upgrade Utility....................................... 21
Dependencias de Visual Basic Upgrade Tool................................................ 23
Parmetros de Lnea de Comandos .............................................................. 23
Informacin Miscelnea................................................................................... 24
Interfaz de Usuario de VBTools Applications Upgrade Utility..................................... 25

Patterns

31

iv

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL


Fase de Preparacin...................................................................................................... 31
Registrar Versin 6.5 de SWIMAPI.dll................................................................ 31
Preparar el Directorio de Destino de la Conversin ..................................... 31
Mover y Renombrar Archivos de Proyecto Visual Basic 6.0 ......................... 31
Leer Propiedades en el Archivo .FRX .............................................................. 31
Quitar Comillas desde Propiedades Tools for Visual Basic ........................... 32
Quitar Controles Custom y Referencias desde Archivos.............................. 32
Establecer Valores Iniciales de Font................................................................ 32
Preparar Tipos Definidos por el Usuario para Conversin............................. 32
Guardar Informacin de Control .................................................................... 32
Renombrar sDate y sTime a Integer ................................................................ 32
Quitar la Propiedad Bindings del Control ....................................................... 32
Corregir Items Case-sensitive en Archivo de Proyecto ................................ 32
Fase Update .................................................................................................................... 34
Registrar Version 7.0 de SWIMAPI.dll................................................................ 34
Mover Archivos de Proyecto............................................................................ 34
Agregar Area Include para Kernel Exports ................................................... 34
Actualizar Referencias SWIMAPI ..................................................................... 35
Actualizar el Nombre de Assembly ................................................................. 35
Cambie Referencias SAF en el Archivo de Proyecto ................................... 35
Agregar Propiedad IsInitializing a Formularios ............................................... 35
Modificar el Handler de Evento Form Load en Subformularios ................... 36
Quitar el String SWIMAPI Typelib....................................................................... 36
Quitar Parmetros de Largo desde las Llamadas API .................................. 37
Actualizar Constantes de Botones de la Barra de Herramientas................ 37
Manejar Instrucciones SetMousePointer......................................................... 37
Actualizar Twips a Pixels en APIs....................................................................... 37
Modificar SAF Event Signatures........................................................................ 37
Convertir Buffers de Datos (.DH File Conversion)........................................... 37
Actualizar Direcciones de Parmetros API..................................................... 38
Agregar Kernel Exports...................................................................................... 38
Restore Nombres de Campo Tools for Visual Basic ....................................... 38
Set Control Properties........................................................................................ 38
Realinear Propiedad Top para Controles en Tarjetas................................... 38
Establecer los Pasos 1 y 2 de Application Startup......................................... 39
Ubicar Archivos Pre-convertidos...................................................................... 39
Ubicar Assemblies .............................................................................................. 39
Quitar las Advertencias y Notas de Conversin ............................................ 39
Agregar SDKHelpProvider a Formularios......................................................... 39
Agregar Version de Archivo (File Stamp Version) ......................................... 39

Issues

41

Tips y Tricks

63

Debugging una Aplicacin .......................................................................................... 63


Shared Event Signatures Signatura de Eventos Compartidos .................................. 63
Slowdown de Visual Studio IDE ..................................................................................... 64
Uso de la Task List de Visual Studio ............................................................................... 64

Recursos

67

Apndice A: Cambios de Cdigo para Object Model de Solomon

69

Cambiar Cdigo para Utilizar Object Model de Solomon .......................... 69

Table of Contents

Cambiar Cdigo para Clientes de Object Model de Solomon ................. 69

Apndice B: Ejecutar Aplicaciones conectadas - .NET desde una Network71


Indice

73

Introduccin

Introduccin
El objetivo de esta informacin es proporcionar instruccin y gua para los
desarrolladores de aplicaciones que utilizan Microsoft Visual Basic 2005 Conversion
Toolkit for Microsoft Dynamics SL. El Conversin Toolkit est diseado para traducir las
aplicaciones de Microsoft Dynamics SL 6.5 desarrolladas utilizando Microsoft Visual Basic
6.0 para utilizar en un ambiente Microsoft Visual Basic .NET. Para hacer esta conversin,
usted debe dejar atrs el ambiente de desarrollo de Visual Basic 6.0 y cambiarse a
Visual Basic 2005. Esta gua le ayudar a llevar sus aplicaciones a travs de esta
conversin.

Quin Debera Leer Esto?


Esta informacin debera ser leda por los desarrolladores de aplicaciones para Microsoft
Dynamics SL.

Qu Contiene?
Los siguientes temas proporcionan informacin introductoria.
Preparacin Trata aspectos de entrenamiento, configuracin y ambiente que se
deben considerar antes de efectuar la conversin desde Visual Basic 6.0 a Visual Basic
2005.
Qu Ha Cambiado? Explica las diferencias entre el ambiente desarrollo de Microsoft
Solomon Tools for Visual Basic y el ambiente de desarrollo de Microsoft Dynamics SL
Software Development Kit (Microsoft SL SDK.
Utilitario de Conversin Proporciona informacin acerca del trabajo con la interfaz de
usuario de Conversion Toolkit y el utilitario de lnea de comandos.
Patterns Entrega detalles acerca de los patrones de cdigo utilizados por Conversion
Toolkit.
Issues Describe issues de Conversion Toolkit y entrega ayuda para resolverlos.
Tips y Tricks Ofrece asesora del proceso de upgrade.
Recursos Proporciona recursos que usted puede utilizar para ampliar sus
conocimientos en la actualizacin de aplicaciones desde Visual Basic 6.0 a Visual Basic
2005.

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Convenciones de Documentacion
Se utilizan las siguientes convenciones a travs de esta documentacin para ayudarle a
determinar rpidamente los nombres de pantallas, combinaciones de teclas,
procedimientos, selecciones de men y nombres de botones.

Las opciones de men, tarjetas y botones aparecen en texto Negritas Especiales. Aparece
una barra vertical entre opciones individuales donde se indica una serie de selecciones de
men. Aparece un subrayado bajo la letra apropiada de una opcin de men donde existe
una alternativa de combinacin de teclas para escoger la opcin. Por ejemplo:

Elija Archivo | Guardar o haga click en Guardar.

Seleccione Lotes para aplicar las funciones de navegacin a Lotes.

Los nombres de pantallas estn escritos en cursivas y estn seguidas por el nmero de
pantalla entre parntesis. Los nombres de campos para ingreso de datos, checkboxes y
radio buttons estn en negritas. Los nombres de marcos y opciones de campo aparecen
como texto normal. Por ejemplo:

Elija Guardar para cerrar Time Entry (02.010.00).

Elija Utilidad | Password. Se muestra el cuadro de dilogo Cambio de Password.

En PR Setup (02.950.00), click en la tarjeta Payroll Information. Se muestra la


tarjeta Payroll Information.

En el recuadro Consultant, ingrese la informacin acerca de su consultor certificado


Microsoft.

Las combinaciones de teclas se muestran en letra MAYUSCULAS Courier New, separadas


por un signo ms +. Para usar una combinacin de teclas, presione y mantenga la primera
tecla en la secuencia, luego presiona la segunda tecla. Por ejemplo:
Presione CTRL+C para copiar su seleccin en el portapapeles.

Los ejemplos de cdigo aparecen en formato Courier New. Por ejemplo:


Public Sub SetAddr(ByVal LevelNbr As Short, ByVal TableNameStr As
String, ByRef bTableName As SolomonDataObject, ByRef nTableName
As Object)

En algunos casos, pueden existir mltiples procedimientos para cada tpico. El comienzo de
cada procedimiento es precedido por un prrafo en texto negrita al comienzo de cada
instruccin o conjunto de pasos para ayudarle a encontrar rpidamente los procedimientos
en cada pgina. Por ejemplo:
Para configurar una factura recurrente:

Las notas y ejemplos se identifican con la palabra Nota o Ejemplo para distinguirlas del
resto del texto. Por ejemplo:
Nota: Las opciones de configuracin del mdulo Contabilidad se encuentran en
Control de Contabilidad (01.950.00).
Ejemplo: Abra DD Setup (02.951.00) en el modulo Payroll.

Preparacin

Preparacin
Acerca de Microsoft Visual Basic 2005
A diferencia de Visual Basic 6.0 o Visual Basic 5.0, Visual Basic 2005 no es una
actualizacin incremental. Es un nuevo lenguaje con muchas similaridades sintcticas
con el antiguo Visual Basic de 32 bits. Visual Basic 2005 es un poderoso lenguaje al
mismo nivel que Visual C++ o Visual C#, Vea el documento Web MSDN, , Upgrading to
Visual Basic 2005, informacin acerca de las nuevas caractersticas que se encuentran
en Visual Basic 2005.

Entrenamiento
Para prepararse para la experiencia de conversin, es importante que usted tenga una
comprensin total de Visual Basic 2005. Vea Recursos por asistencia en esta rea.

Herramientas de Conversion
Microsoft Dynamics SL 6.5 Code Inspector
El Code Inspector de Microsoft Dynamics SL 6.5 fu proporcionado no solamente con la
version 6.5, sino que tambin con versiones anteriores. Puede ayudarle a determinar,
antes de la conversin, si es que una aplicacin creada en Tools for Visual Basic
satisface los estndares de Microsoft Dynamics SL standards. Estos estndares incluyen el
uso apropiado de interfaces de programacin de aplicaciones (APIs) de modo que
esas caractersticas de la aplicacin funcionen correctamente.
Generalmente, los problemas que encuentra el Code Inspector se transforman en
posibles problemas para la conversin. Por ejemplo, una aplicacin presenta el mensaje
de advertencia Explicit property assignments versus SetProp commands. Todas las
llamadas SetProp deben ser convertidas al nuevo ambiente donde el uso directo est
sujeto al proceso de conversin. Todava pueden existir problemas para las propiedades
que no son mapeadas al nuevo ambiente.

Visual Basic Upgrade Tool


Esta es la herramienta utilizada por Visual Studio para convertir los programas Visual
Basic 6.0 a Visual Basic 2005. Fu desarrollado para Microsoft por ArtinSoft y algunas
veces es referido como ArtinSoft utility. Se distribuje con Visual Studio 2005 y se
encuentra en la carpeta \VB\VBUpgrade bajo la carpeta de instalacin de Microsoft
Visual Studio. El utilitario se puede ejecutar desde la lnea de comandos en el ejecutable
VBUpgrade.exe, o utilizando el Visual Studio Upgrade Wizard cuando se abre un archivo
de projecto Visual Basic 6.0 con Visual Studio 2005.

VBTools Applications Upgrade Utility


El Utilitario de Actualizacin de VBTools Applications es un suplemento para la
Herramienta de Actualizacin de Visual Basic. Este es un utilitario de lnea de comando.
Se encuentra bajo la carpeta de instalacin de Microsoft Dynamics SL en el directorio
\VT\VB 2005 Code Converter en el archivo ejecutable VBToolsAppUpgrade.exe.

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Microsoft Dynamics SL SDK Conversion Utility


El Utilitario de Conversin Microsoft Dynamics SL SDK Conversion Utility es una interfaz
grfica de usuario (GUI) front-end para el Utilitario de Actualizacin VBTools Applications
Upgrade Utility.

Setup
Necesidades de Preparacin del Ambiente de Desarrollo
Visual Basic 6.0
El ambiente de desarrollo de Visual Basic 6.0 debe estar intacto, y todos los
componentes deben estar disponibles antes de poder comenzar con el proceso de
conversin.
Se recomienda que usted tenga instalado el Service Pack 5 de Visual Basics 6.0 o uno
superior de modo que pueda ver su aplicacin fuente original si es que es necesario
durante el proceso de conversin. Esto tambin le otorgar la capacidad de utilizar el
Code Inspector de Microsoft Dynamics SL 6.5.

Instalacin de Visual Studio 2005


Antes de utilizar Conversion Toolkit, usted debe instalar Microsoft Visual Studio 2005.
Para obtener ayuda con esta tarea, vea el documento Web MSDN Getting Started
with Visual Studio Installer.

Instalacin de Microsoft Dynamics SL 7.0


Antes de convertir las aplicaciones existentes y desarrollar otras nuevas, usted debe
desinstalar Microsoft Dynamics SL desde todos los computadores que participan en el
proceso de conversin. Luego usted puede instalar la versin 7.0 con la opcin Microsoft
Dynamics SL SDK . Para obtener asistencia vea Microsoft Dynamics SL Install Guide
Release 7.0.
Nota: Algunos nombres de archivos y carpetas pueden haber cambiado en la versin
7.0.

La carpeta por omisin del programa es ahora \Program Files\Microsoft Dynamics


SL.

Se ha agregado una carpeta comn de programas a la instalacin del cliente. La


ubicacin de esta carpeta es \Program Files\Common Files\Microsoft Dynamics SL.

Se ha agregado un archivo global assemblies cache llamado Solomon.Kernel.dll.

Se llama Assemblies a la carpeta de assemblies .NET bajo la carpeta Microsoft


Dynamics SL .

Cuando finalice su instalacin 7.0, usted estar listo para comenzar a convertir y
ejecutar aplicaciones.

Agregar Code Inspector al Men de Herramientas de Visual


Studio
Despus de instalar Microsoft Dynamics SL 7.0, usted necesitar agregar el Inpector de
Cdigo (Code Inspector) al men de Herramientas en Visual Studio 2005.
Para agregar el Code Inspector al men de Herramientas de Visual Studio:

Preparacin
1. Abra Microsoft Visual Studio 2005. Aparece la Pgina Start.
2. En el men Tools, click en Add-in Manager. Aparece la ventana Add-in Manager,
mostrando una lista de los add-ins disponibles en Visual Studio, incluyendo Code
Inspector.
3. Seleccione las tres boxes en la fila del Cdigo Inspector, y luego haga click en OK.
4. Abra nuevamente el men Tools, y note que aparece CodeInspector en el men.

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Qu Ha Cambiado?

Qu Ha Cambiado?
El Cambio hacia Managed Code
Todos los mdulos en Microsoft Dynamics SL son managed code, productos conectados
.NET. La estructura de trabajo de aplicaciones que los sustenta (SAF) es una mezcla de
cdigo nativo y managed code.

Nuevos Archivos Fuente Requeridos

El archivo managed Solomon.VBTools.vb reemplaza los archivos nativos Swim.bas,


Applic.dh, y VBTApp.cls.

ApplicationEvents.vb agrega un aplicacin handler de eventos startup utilizado por


Microsoft SL SDK para ayudar a descubrir los assemblies utilizados por todas las
aplicaciones.

Archivos Fuentes Retirados


Ya no se requiere New_form.frm y ha sido retirado.

Declaraciones Fuente Cambiadas de Ubicacin


Las declaraciones para funciones de impresoras utilizaban as Any para la estructura
PrintInfo. Ya que se requieren estrictas declaraciones en Visual Basic 2005, las siguientes
declaraciones han sido cambiadas hasta el archivo donde reside la estructura PrintInfo,
roipinfo.dh.vb (anteriormente roipinfo.dh):

GetSwimPrintInfo

SetSwimPrintInfo

GetSwimDefaultPrintInfo

SetSwimDefaultPrintInfo

PrintInfoToAscii

PrintInfoFromAscii

Binarios Cambiados de Ubicacin


Los siguientes archivos han sido cambiados desde la carpeta de programa Microsoft
Solomon (C:\Program Files\
Solomon) hasta la carpeta comn de archivos de programa (C:\Program
Files\Common Files\
Microsoft Dynamics SL):

SolVBA.dll

SolomonWrapper.dll

SBLtoVBA.dll

SBLtoVBAControls.ocx

Binarios Obsoletos
Los siguientes archivos estn obsoletos y ya no se requieren:

SAFCont.dll

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

SAFDes.dll

SAFTools.dll

Se muestra una lista de los siguientes archivos obsoletos y aquellos que los reemplazan:

SAFAccRt.dll es reemplazado por SAFAccessRights.dll (managed code)

SAFReg.dll es reemplazado por by SAFRegistration.dll (managed code)

Nuevas Carpetas
El nuevo cdigo managed es almacenado en las siguientes carpetas de su sistema:

Assemblies El path tpico de esta carpeta es C:\Program Files\Microsoft Dynamics


SL\
Assemblies, La carpeta contiene todo los assemblies de cdigo managed utilizados
por Microsoft SL SDK y las aplicaciones. Cualquier nuevo assembly agregado por una
aplicacin debera estar instalado en esta ubicacin.

Common Files Se ha agregado una nueva carpeta para contener los assemblies
comunes del cliente. El path para esta carpeta es \Program Files\Common
Files\Microsoft Dynamics SL.

VT SDK El path tpico para esta carpeta es C:\Program Files\Microsoft Dynamics


SL\VT. La carpeta contiene los archivos Microsoft SL SDK requeridos para la
conversin o desarrollo de aplicaciones.

VB 2005 Cdigo Converter El path tpico para esta carpeta es C:\Program Files\
Microsoft Dynamics SL\VT\VB 2005 Cdigo Converter. La carpeta contiene la
interfaz de usuario y los archivos de conversin de lneas de comando, como
tambin los archivos base 6.5 requeridos para la conversin (por ejemplo, el archivo
SWIMAPI.dll).

Plantilla de Proyecto Microsoft Dynamics SL SDK El path tpico para esta carpeta
es
C:\Program Files\Microsoft Dynamics SL\VT\Microsoft Dynamics SL SDK Project
Template. La carpeta contiene el archivo base Microsoft Dynamics SL SDK que se
incluye en cada proyecto de aplicacin.

Nuevos Assemblies
Se han introducido muchos nuevos managed assemblies en esta versin. Un assembly
responsable por la interfaz entre las aplicaciones y el kernel de SWIMAPI.dll es el
assembly Solomon.Kernel.dll . Este archivo est ubicado en la carpeta Common
Programs bajo Microsoft Dynamics SL. Este assembly es parte de Global Assembly Cache
y se encuentra automticamente al referenciarlo en tiempo de diseo o en runtime.
Se puede encontrar los siguientes tipos de assemblies en C:\Program Files\Microsoft
Dynamics SL\
Assemblies:

Interop assemblies Utilice estos assemblies para organizar la informacin entre los
espacios de cdigo managed y cdigo nativo. Usted puede necesitar agregar un
interop assembly si es que usted planea utilizar un control nativo de third-party.
Durante la conversin, este assembly es generado automticamente si es que no se
encuentra.

Control array assemblies Utilice estos assemblies para soportar arreglos de control
para tipos de control especficos. Usted puede desear mantener un conjunto de
instancias de control (ahora arrays) que le permitirn continuar utilizando un control

Qu Ha Cambiado?

nativo de terceros (third-party). Durante la conversin, este assembly es generado


automticamente si es que no se encuentra.

Interop.SAF.dll assembly Este assembly es una combinacn de tipos de interop y


arreglos de controles que son especficos para Microsoft Dynamics SL.

Otros assemblies La carpeta Assemblies proporciona una ubicacin de


almacenamiento para los assemblies requeridos por los mdulos de Microsoft
Dynamics SL. Los cdigo assemblies requeridos por las aplicaciones de
adaptaciones que usted genera utilizando Microsoft Dynamic SL SDK pueden ser
almacenadas tambin en esta carpeta.

Requerimientos de Proyecto
Los requerimientos mnimos de proyecto para asegurar que Microsoft SL SDK compilar y
ejecutar adecuadamente un proyecto de Tools for Visual Basic son:

Referencias de assembly Microsoft Dynamics SL:

Interop.SAF

Solomon.Kernel

Referencias de assembly Microsoft Visual Studio:

Microsoft.VisualBasic.Compatibility

System

System.Data (opcional, defaults de Visual Basic 2005)

System.Drawing

System.Windows.Forms

System.Xml (opcional, Visual Basic 2005 defaults)

Archivos Microsoft SL SDK requeridos en cada proyecto:

Solomon.VBTools. vb Ubicado en la carpeta \VT\VB\ bajo la carpeta de


programa Microsoft Dynamics SL )

ApplicationEvents.vb Ubicado en la carpeta


\VT\VB\VBWizards\Templates\1033 bajo la carpeta de programa Microsoft
Dynamics SL

El formulario principal de inicio debe ser llamado y configurado como Form1.

Debe estar habilitado el marco de trabajo (framework) de aplicacin.

Opcional: Incluya un componente HelpProvider llamado SAFHelpProvider en cada


form que utilizar el help provider.

Nueva Plantilla de Proyecto para Aplicaciones


Durante la instalacin de Microsoft Dynamics SL SDK, se coloca una plantilla de
proyecto en el ambiente Visual Studio 2005. Se puede encontrar en Visual Studio
seleccionando File | New | Project o presionando CTRL+N.

10

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Figure 1: New Project template

Para evitar problemas, utilice esta plantilla al crear nuevos proyectos de aplicacin
Microsoft Dynamics SL. La plantilla incluye mejoras especficas de cdigo que son
importantes en aplicaciones Microsoft Dynamics SL.
Nota: El Utilitario de Conversin Microsoft Dynamics SL Conversion Utility agregar todos
los componentes requeridos a su proyecto.

Cambio de Sistema de Help


WinHelp es reemplazado por HTML help en las versiones .NET-connected de Microsoft
Dynamics SL. La ayuda a nivel de pantalla est disponible en todos los mdulos incluidos
en estas versiones.
La ayuda a nivel de pantalla se basa en nombres de mdulos y pantallas. El nombre del
archivo de ayuda es derivado desde el mdulo asociado con la pantalla, y el tpico de
ayuda es derivado desde el ttulo de la pantalla. Los detalles detrs de la lgica de
diseo de ayuda a nivel de pantalla son los siguientes:

Cada formulario tiene un componente proveedor de ayuda Visual Basic 2005


llamado SAFHelpProvider.

Si la propiedad SAFHelpProvider.HelpNamespace est vaca, el archivo de ayuda se


encuentra ubicado en C:\Program Files\Microsoft Dynamics SL\Help. El nombre del
archivo de ayuda contiene el acrnimo de dos letras asociado con el nombre de
programa de la pantalla. Por ejemplo, 0101000.exe es un archivo de Contabilidad
(General Ledger), de modo que el archivo de ayuda es SL_GL.chm.

Si la propiedad Forms HelpNavigator es AssociateIndex y Forms HelpKeyword est


vaca, el tpico de ayuda para la totalidad del formulario se basa en el ttulo del
formulario. Por ejemplo, el tpico de ayuda para la pantalla Registration toma el
ttulo Registration (95.250.00) y lo convierte para que coincida con el tpico de
generacin de ayuda SL_SM_rtf/Registration_95_250_00.htm.

Usted puede adaptar la ayuda a nivel de pantalla agregando su propio componente


HelpProvider que tenga un nombre diferente de SAFHelpProvider para cada formulario

Qu Ha Cambiado?

11

Vea la documentacin de Visual Basic 2005 por informacin acerca del uso de
componente HelpProvider.
La ayuda a nivel de pantalla es invocada presionando la tecla F1 o el botn Help en la
barra de herramientas de la aplicacin.

Interfaces de Programacin de la Aplicacin


Cambios a APIs en los que se retir el Parmetro Length
Las siguientes interfaces de programacin (APIs) han cambiado para acomodarse al
ambiente de managed code. El paso de largos de buffer como parmetros ya no es
requerido porque la informacin puede ser obtenida utilizando reflection in .NET.
Public Sub SetAddr(ByVal LevelNbr As Short, ByVal TableNameStr As
String, ByRef bTableName As SolomonDataObject, ByRef nTableName As
Object)
Function PVChkFetch1(ByVal Ctrl As Object, ByRef Cursor As Short,
ByVal SQLParmValue As String, ByRef bTable1 As SolomonDataObject) As
Short
Function PVChkFetch4(ByVal Ctrl As Object, ByRef Cursor As Short,
ByVal SQLParmValue As String, ByRef bTable1 As SolomonDataObject, ByRef
bTable2 As Object, ByRef bTable3 As Object, ByRef bTable4 As Object) As
Short
Function PVChkFetch8(ByVal Ctrl As Object, ByRef Cursor As Short,
ByVal SQLParmValue As String, ByRef bTable1 As SolomonDataObject, ByRef
bTable2 As Object, ByRef bTable3 As Object, ByRef bTable4 As Object,
ByRef bTable5 As Object, ByRef bTable6 As Object, ByRef bTable7 As
Object, ByRef bTable8 As Object) As Short
Sub SInsert1(ByVal Cursor As Short, ByVal TablesInsertingInto As
String, ByRef bTable1 As SolomonDataObject)
Sub SInsert4(ByVal Cursor As Short, ByVal TablesInsertingInto As
String, ByRef bTable1 As SolomonDataObject, ByRef bTable2 As Object,
ByRef bTable3 As Object, ByRef bTable4 As Object)
Sub SInsert8(ByVal Cursor As Short, ByVal TablesInsertingInto As
String, ByRef bTable1 As SolomonDataObject, ByRef bTable2 As Object,
ByRef bTable3 As Object, ByRef bTable4 As Object, ByRef bTable5 As
Object, ByRef bTable6 As Object, ByRef bTable7 As Object, ByRef bTable8
As Object)
Public Function SqlFetch1(ByRef cursor As Short, _
ByVal sqlStatement As String, _
ByRef bTable1 As Object _
) As Short
Public Function SqlFetch4(ByRef Cursor As Short, _
ByVal sqlStatement As String, _
ByRef bTable1 As Object, _
ByRef bTable2 As Object, _
ByRef bTable3 As Object, _
ByRef bTable4 As Object _
) As Short
Public Function SqlFetch8(ByRef Cursor As Short, _
ByVal SqlStr As String, _
ByRef bTable1 As Object, _
ByRef bTable2 As Object, _
ByRef bTable3 As Object, _
ByRef bTable4 As Object, _
ByRef bTable5 As Object, _
ByRef bTable6 As Object, _

12

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

ByRef bTable7 As Object, _


ByRef bTable8 As Object _
) As Short
Public Function SFetch1(ByVal cursor As Short, _
ByRef bTable1 As Object) As Short
Function SFetch4(ByVal Cursor As Short, _
ByRef bTable1 As Object, _
ByRef bTable2 As Object, _
ByRef bTable3 As Object, _
ByRef bTable4 As Object _
) As Short
Function SFetch8(ByVal Cursor As Short, _
ByRef bTable1 As Object, _
ByRef bTable2 As Object, _
ByRef bTable3 As Object, _
ByRef bTable4 As Object, _
ByRef bTable5 As Object, _
ByRef bTable6 As Object, _
ByRef bTable7 As Object, _
ByRef bTable8 As Object _
) As Short
Sub SUpdate1(ByVal Cursor As Short, ByVal TablesUpdating As String,
ByRef bTable1 As SolomonDataObject)
Sub SUpdate4(ByVal Cursor As Short, ByVal TablesUpdating As String,
ByRef bTable1 As SolomonDataObject, ByRef bTable2 As Object, ByRef
bTable3 As Object, ByRef bTable4 As Object)
Sub SUpdate8(ByVal Cursor As Short, ByVal TablesUpdating As String,
ByRef bTable1 As SolomonDataObject, ByRef bTable2 As Object, ByRef
bTable3 As Object, ByRef bTable4 As Object, ByRef bTable5 As Object,
ByRef bTable6 As Object, ByRef bTable7 As Object, ByRef bTable8 As
Object)
Function SGroupFetch1(ByVal Cursor As Short, ByRef bTable1 As
SolomonDataObject) As Short
Public Function SGroupFetch1(ByVal cursor As Short, _
ByRef bTable1 As Object) As Short
Function SGroupFetch4(ByVal Cursor As Short, _
ByRef bTable1 As Object, _
ByRef bTable2 As Object, _
ByRef bTable3 As Object, _
ByRef bTable4 As Object _
) As Short
Function SGroupFetch8(ByVal Cursor As Short, _
ByRef bTable1 As Object, _
ByRef bTable2 As Object, _
ByRef bTable3 As Object, _
ByRef bTable4 As Object, _
ByRef bTable5 As Object, _
ByRef bTable6 As Object, _
ByRef bTable7 As Object, _
ByRef bTable8 As Object _
) As Short
Function DetailSetup(ByVal Cursor As Short, ByVal SAFGridCtrl As
Interop.SAF.SAFGrid, ByVal AutoLineNbfFld As Object, ByRef bTable1 As
SolomonDataObject, ByRef bTable2 As Object, ByRef bTable3 As Object,
ByRef bTable4 As Object) As Short
Function DetailSetup8(ByVal Cursor As Short, ByVal SAFGridCtrl As
Interop.SAF.SAFGrid, ByVal AutoLineNbfFld As Object, ByRef bTable1 As
SolomonDataObject, ByRef bTable2 As Object, ByRef bTable3 As Object,

Qu Ha Cambiado?

13

ByRef bTable4 As Object, ByRef bTable5 As Object, ByRef bTable6 As


Object, ByRef bTable7 As Object, ByRef bTable8 As Object) As Short
Function MOpen(ByVal DelRetToSystem As Short, ByRef bTable1 As
SolomonDataObject, ByRef bTable2 As Object, ByRef bTable3 As Object,
ByRef bTable4 As Object) As Short
Function MOpen8(ByVal DelRetToSystem As Short, ByRef bTable1 As
SolomonDataObject, ByRef bTable2 As Object, ByRef bTable3 As Object,
ByRef bTable4 As Object, ByRef bTable5 As Object, ByRef bTable6 As
Object, ByRef bTable7 As Object, ByRef bTable8 As Object) As Short
Function MExtend(ByVal MemHandle As Short, ByRef bTable As
SolomonDataObject) As Short
Function DBNavFetch1(ByVal Ctrl As Object, ByRef Cursor As Short,
ByVal SQLParmValue As String, ByRef bTable1 As SolomonDataObject) As
Short
Function DBNavFetch4(ByVal Ctrl As Object, ByRef Cursor As Short,
ByVal SQLParmValue As String, ByRef bTable1 As SolomonDataObject, ByRef
bTable2 As Object, ByRef bTable3 As Object, ByRef bTable4 As Object) As
Short
Function DBNavFetch8(ByVal Ctrl As Object, ByRef Cursor As Short,
ByVal SQLParmValue As String, ByRef bTable1 As SolomonDataObject, ByRef
bTable2 As Object, ByRef bTable3 As Object, ByRef bTable4 As Object,
ByRef bTable5 As Object, ByRef bTable6 As Object, ByRef bTable7 As
Object, ByRef bTable8 As Object) As Short
Sub MKeyOffset(ByVal MemHandle As Short, _
ByVal KeySegmentNbr As Short, _
ByRef bTable As SolomonDataObject, _
ByVal KeyFldByteOffset As Short, _
ByVal KeyFldDataType As Short, _
ByVal KeyFldDataLength As Short, _
ByVal Ascending As Short)
Function DetailSetupExtend(ByVal SAFGridCtrl As
Interop.SAF.SAFGrid, ByRef bTable1 As SolomonDataObject) As Short

Cambios en SAF Event Signature


Todos los event signatures requieren la palabra clave Handles en conjunto con el
nombre del evento. El siguiente es un ejemplo de event signature adicional para el
evento Update en un control Update:
Handles Update1.UpdateEvent

Cambios de Control
Los controles especficos de Microsoft utilizados por versiones anteriores de Tools for
Visual Basic han sido reemplazados por sus equivalentes .NET. Los siguientes controles
intrnsecos Visual Basic mapean los controles anteriores a travs de Conversion Toolkit:
Control

Mapea a

VB.Form

System.Windows.Forms.Form

VB.CommandButton

System.Windows.Forms.Button

VB.Label

System.Windows.Forms.Label

VB.TextBox

System.Windows.Forms.TextBox

VB.Frame

System.Windows.Forms.GroupBox or
System.Windows.Forms.Panel

MS.SSTab

System.Windows.Forms.TabControl &
System.Windows.Forms.TabPage

14

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Framing
El control Frame ha sido reemplazado por GroupBox o el control Panel . Si la propiedad
BorderStyle del control Frame Visual Basic 6.0 es None, un control Panel reemplazar el
control Frame. De otro modo, se utiliza un GroupBox para reemplazar el control Frame
control.

Tarjetas
Se han efectuado cambios significativos al control tarjeta (tab). El control tarjeta de
Visual Basic 6.0 era un control contenedor-simple container que contena todas las
pginas de tarjetas y controles de una tarjeta. La tarjeta de Visual Basic 2005 consiste de
dos controles, el control tarjeta y la pgina de tarjeta. El control tarjeta es un container
que almacena mltiples controles de pginas de tarjetas. Cada control pgina de
tarjeta (tab page) contiene los controles para esa pgina de tarjeta. El acceso a
tarjetas es monitoreado por Microsoft Dynamics SL con el fin de producir el
comportamiento adecuado en una pantalla.
Anteriormente, muchos desarrolladores utilizaban settings directos para las tarjetas para
alcanzar los resultados deseados. Los settings de Property deban hacerse a travs de la
API SetProps() API para mantener el flujo de programa adecuado en las aplicaciones.
Para establecer una visibilidad de una pgina de tarjetas especfica, call SetProps(
<form>, <tabControl>, <tabControl>, TabVisible(n), <True|False>), donde (n)
representa el orden de pgina de tarjetas (base 0). Por ejemplo, para establecer una
primera pgina de tarjetas invisible:
Call SetProps(Form1, My.Forms.Form1.SSTab1, _
My.Forms.Form1.SSTab1, "TabVisible(0)", False)
Para habilitar o deshabilitar una tab page especfico, call SetProps( <form>,
<tabControl>, <tabControl>, TabEnabled (n), <True|False>), donde n representa el
orden de pgina de tarjetas (base 0). Por ejemplo, para deshabilitar la primera pgina
de tarjetas:
Call SetProps(Form1, My.Forms.Form1.SSTab1, _
My.Forms.Form1.SSTab1, "TabEnabled(0)", False)
Para establecer un caption de tarjeta especfico , call SetProps( <form>, <tabControl>,
<tabControl>, TabCaption (n), <CaptionString>), donde n representa el orden de
pgina de tarjetas (base 0). Por ejemplo, para establecer el caption de la primera
pgina de tarjetas en TAB0:
Call SetProps(Form1, My.Forms.Form1.SSTab1, _
My.Forms.Form1.SSTab1, "TabCaption(0)", TAB0)
Para agregar pginas de tarjetas, call SetProps( <form>, <tabControl>, <tabControl>,
Tabs, <value>), donde value representa el nmero total de pginas de tarjetas
necesarias. Si este nmero es menor o igual al nmero actual de pginas de tarjetas, no
se harn cambios. Por ejemplo, para agregar cinco pginas de tarjetas:
Call SetProps(Form1, My.Forms.Form1.SSTab1, _
My.Forms.Form1.SSTab1, "Tabs", 5)

Dealing con Array Assemblies


Los arreglos de controles Visual Basic 6.0 no son soportados por .NET WinForms. Cuando
Visual Basic Upgrade Tool encuentra un arreglo de controles, ejecuta las siguientes
actividades:

Qu Ha Cambiado?

15

Cambia el nombre de cada control a un patrn de nombre especfico basado en el


nombre de control original. Por ejemplo, originalcontrolname(n) se convierte en
_originalcontrolname_n.

Crea una coleccin strongly-typed que contiene cada control renombrado de


modo que se mantiene esa compatibilidad de cdigo fuente con el programa
Visual Basic 6.0. La coleccin retiene el nombre del arreglo original. Por ejemplo, el
cdigo escrito como originalcontrolname(n) = somevalue continuar funcionando.

El nuevo tipo de coleccin est contenido en un nuevo assembly generado por el


Visual Basic Upgrade Tool. Se coloca una referencia a este assembly en su programa
automticamente.

Los Event handlers para el arreglo de controles continuarn trabajando como antes.
Sin embargo, hay un cambio en event handle signature, el cual no contiene el valor
de ndice del control. El Visual Basic Upgrade Tool cambiar el event handler para
obtener el valor de ndice del control pasando la instancia del control al mtodo
GetIndex. GetIndex devolver el valor de ndice de la coleccin donde reside el
control. En el siguiente ejemplo, Command1 es una coleccin que contiene
controles WinForm Button :
Private Sub Command1_Click(ByVal eventSender As System.Object,
ByVal eventArgs As System.EventArgs) Handles Command1.Click
Dim Index As Short = Command1.GetIndex(eventSender)
If Index = 0 Then
Command1(Index).Enabled = False
Else
End If
End Sub

Microsoft SL SDK debe soportar las nuevas convenciones de nombres implementadas


por el Conversion Toolkit. Este es un ejemplo de los cambios que ocurren y como
deberan ser mapeados entre los ambientes disponibles:
Visual Basic 6.0 SomeControlName(n) mapea a _SomeControlName_n en Visual
Basic 2005.

SomeControlName_array_n es el nombre del valor soportado por Visual Basic for


Applications.

SomeControlName(n) es el nombre de valor soportado por Basic Script


Language y Solomon Object Model.

Nota: Es crtico para una compatibilidad inversa que usted retenga los nombres de
control seleccionados por Conversion Toolkit para los arreglos de controles convertidos.
Las adaptaciones existentes, las plantillas y archivos de control de Importacin de
Transacciones que contienen referencias a los arreglos de controles fallarn a menos
que se retenga el nombre convertido.

Assembly de Arreglos SAF (SAF Array Assembly)


Visual Basic Upgrade Tool genera un assembly de arreglos que contiene una clase de
coleccin para cada tipo de control que tenga dos o ms instancias de control. Para
los controles SAF, estas clases de coleccin estn ubicadas dentro del mismo assembly
que contiene la versin interop de los controles SAF, de modo que no se necesitan
assemblies separados para estas clases de colecciones. Esto reduce el nmero de
referencias de assembly que requiere su programa para manejar los diferentes tipos de
control en la coleccin SAF.ocx .

16

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Nuevo control de Men y Barra de Herramientas


El control que se utilizaba para el uso de men y barra de herramientas en cada
aplicacin ha sido reemplazado con la barra de herramientas nativa de Microsoft. No
requiere de una implementacin especial. Microsoft SL SDK incluye un archivo que
crear la nueva barra de herramientas en runtime.

SolomonDataObject Class Reemplaza Header Files


Tools for Visual Basic proporcionaba archivos data header (.dh) que eran
representaciones estructurales de las tablas de base de datos. En managed code, los
reemplazos de los archivos de encabezados de datos son los archivos de clase
SolomonDataObject (.sdo) . Estos archivos contienen clases que representan las tablas
de base de datos. Cada clase tiene propiedades que representan los campos de una
tabla. Cada propiedad tiene atributos que entregan informacin de tamao y offset a
Microsoft SL SDK.
El ejemplo siguiente muestra una declaracin de clase ScreenMenu, e ilustra los
siguientes importantes conceptos relacionados con el uso de la clase
SolomonDataObject :

Herencia desde la clase base SolomonDataObject.

Declaracin de propiedades que contienen getters y setters llaman la clase base de


SolomonDataObject para obtener (get) o establecer ( set) los datos requeridos.

Atributos de cdigo adjuntos a cada propiedad que describen al kernel de


Microsoft Dynamics SL caractersticas tales como offset, tamao y tipo de la
propiedad. Esta informacin es utilizada por el kernel de Microsoft Dynamics SL para
construir una compatiblidad de layout de memoria con el enlace de datos (data
binding) existente.

Declaracin de variables del tipo ScreenMenu, y asignacin de una nueva instancia


de este tipo a la variable. Note el comentario inserto (embedded) por VBTools
Conversion Utility, que alerta al desarrollador para no utilizar asignacin directa de
una variable a otra. En Visual Basic 6.0, una asignacin directa entre variables de
estructuras copiaba el contenido de una estructura en la otra. Con .NET, la
asignacin de una variable de clase a otra cambia la referencia de la variable a la
misma de la otra variable. En otras palabras, ambas variables hacen referencia a la
misma ubicacin en memoria. Esto es importante si es que la variable en cuestin es
pasada a SetAddr. En este caso, el kernel de Microsoft Dynamics SL tracks la
ubicacin de memoria de la variable especificada en la llamada SetAddr . Si el
contenido de la variable es cambiado accidentalmente al asignar la variable a otra
variable del mismo tipo, la aplicacin dejar de funcionar adecuadamente. Con el
fin de copiar los contenidos de una variable SolomonDataObject a otra, se debera
utilizar el mtodo CopyClass. Por ejemplo, bScreenMenu.CopyClass(nScreenMenu)
asigna el contenido de nScreenMenu a bScreenMenu

Ejemplo:
Module ScreenMenuDH
Public Class ScreenMenu
Inherits SolomonDataObject
<DataBinding(PropertyIndex:=0, StringSize:=10)> Public
Property CategoryID() As String
Get
Return Me.GetPropertyValue("CategoryID")
End Get

Qu Ha Cambiado?

Set(ByVal Value As String)


Me.SetPropertyValue("CategoryID", Value)
End Set
End Property
...
<DataBinding(PropertyIndex:=26, StringSize:=1)> Public
Property UserType() As String
Get
Return Me.GetPropertyValue("UserType")
End Get
Set(ByVal Value As String)
Me.SetPropertyValue("UserType", Value)
End Set
End Property
End Class
'DO NOT REASSIGN THESE VARIABLES, i.e. bSomeType =
nSomeType. Use API CopyClass(bSomeType,nSomeType)
Public bScreenMenu As ScreenMenu = New ScreenMenu,
nScreenMenu As ScreenMenu = New ScreenMenu

17

18

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Miembros de Clase SolomonDataObject


SolomonDataObject es la clase utilizada para proporcionar enlace de datos entre la
aplicacin y la base de datos SQL. Una clase de aplicacin se hereda desde la clase
SolomonDataObject, la cual agrega las propiedades deseadas correspondientes a la
tabla SQL, declara una variable del tipo clase, y configura la variable a una nueva
instancia de tipo de clase. Las siguientes tablas listan los mtodos expuestos por el tipo
SolomonDataObject:

AddressOf
Public Function [AddressOf](ByVal propName As String) As System.IntPtr
Resumen
AddressOf es utilizada para obtener la direccin de memoria de una propiedad
especfica denominada en propName.
Parmetros
propName: El nombre de la propiedad para la cual se obtendr una direccin.
Valores de retorno
IntPtr valor que representa una direccin de memoria.
Remarks
AddressOf es til para pasar la direccin de una propiedad individual a las siguientes
llamadas API:

Detailsetup

Detailsetup8

CurrencyField

CurrencyInfo

CurrencyInfo2

DecimalPlaces

Ejemplo
MemHandle = DetailSetup(c2, Spread1, _
bGLTran.AddressOf("LineNbr"), _
bGLTran, PNULL, PNULL, PNULL)

Compare (overloaded)
Public Function Compare(ByVal classInstance As
Solomon.Kernel.SolomonDataObject) As Boolean
Resumen
Compare comparar la instancia actual con la instancia especificada en el
parmetro classInstance para determinar igualdad.
Parmetros
classInstance: La instancia de clase que tendr sus contenidos comparados.
Valores de retorno
True si classInstance es igual a la instancia actual.

Qu Ha Cambiado?

19

Remarks
Compare examinar la memoria perteneciente a las dos instancias de clase y
comparar los buffers de memoria distribuda.
Ejemplo
If bAddress1.Compare(bAddress2) = True Then
Console.Write( "The bAddress1 equals bAddress2")
End If

Public Shared Function Compare(ByVal classInstance1 As _


Solomon.Kernel.SolomonDataObject, ByVal classInstance2 As _
Solomon.Kernel.SolomonDataObject) As Boolean
Resumen
Compare comparar dos instancias de clase por igualdad.

Parmetros
classInstance1: Primera instancia de clase a la que se comparar contenido.
classInstance2: Segunda instancia de clase a la que se comparar contenido.

Valores de retorno
True si classInstance1 es igual a classInstance2.

Remarks
Compare examinar la memoria underlying perteneciente a las dos instancias de
clase y comparar los buffers de memoria distribuda.
Ejemplo
If bAny.Compare(bAddress1, bAddress2) = True Then
Console.Write("The bAddress1 equals bAddress2)
End If

CopyClass
Public Sub CopyClass(ByVal sourceClassInstance As
Solomon.Kernel.SolomonDataObject)
Resumen
CopyClass se utiliza para copiar el contenido de una instancia SolomonDataObject
a otra.
Parmetros
sourceClassInstance: La instancia de clase desde la que se copiar el contenido.
Remarks
Este mtodo debe ser utilizado si se desea copiar en contenido desde un
SolomonDataObject a otro. En Visual Basic 6.0, sto se haca por asignacin directa
de una estructura a otra. Hay una diferencia importante que tener en cuenta y es
que SolomonDataObject es una clase, no una estructura. Si se usa una instancia de

20

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL


clase en una instruccin de asignacin directa en la actual versin de Visual Basic,
cambiar el puntero de la instancia, no su contenido. Para clases derivadas de
SolomonDataObject, la asignacin directa de una instancia de clase a otra tendr
resultados errneos y causar que la aplicacin funcione incorrectamente. Se
debera utilizar CopyClass si se desea copiar el contenido de una clase hacia otra.
Ejemplo
bAccount.CopyClass( nAccount)

GetPropertyLength (overloaded)
Public Function GetPropertyLength(ByVal propName As String) As Short
Resumen
GetPropertyLength devuelve el largo de la propiedad. Para arreglos, se devuelve el
largo del arreglo completo. Para elementos de un arreglo individual, se devuelve el
largo de un solo elemento.
Parmetros
propName: El nombre de la propiedad que se est configurando.
Valores de retorno
Largo de la propiedad en Short Integer.
Ejemplo
Dim propertyLength As Short = _
bAccount.GetPropertyLength("AcctType")

Public Function GetPropertyLength(ByVal propName As String, ByVal index0 As Short)


As Short
Resumen
GetPropertyLength devuelve el largo de la propiedad. Para arreglos, se devuelve el
largo del arreglo completo. Para elementos de un arreglo individual, se devuelve el
largo de un solo elemento.
Parmetros
propName: El nombre de la propiedad que se est configurando. index0: Indice que
representa al elemento en el arreglo.
Valores de retorno
Largo de la propiedad en Short Integer.
Ejemplo
Dim propertyLength As Short = _
btaxcalc.GetPropertyLength("CuryDetTaxAmt", 0)

Utilitario de Conversin

21

Utilitario de Conversin (Upgrade


Utility)
Comprensin del Proceso de Conversin
VBTools Applications Upgrade Utility es un suplemento para Visual Basic Upgrade Tool, el
cual fu desarrollado para Microsoft por Artinsoft. El archivo ejecutable,
VBToolsAppUpgrade.exe, est ubicado en, y debe ser ejecutado desde, el subdirectorio
VT (por ejemplo, C:\Program Files\Microsoft Dynamics SL\VT\
VB 2005 Code Converter). Ejecuta tareas que son nicas para las aplicaciones Microsoft
Dynamics SL. VBTools Applications Upgrade Utility tiene tres fases:

Fase de Preparacin Se aplican las tareas al proyecto Visual Basic 6.0 original. Estas
son principalmente tareas que deben efectuarse antes de la conversin Visual Basic
2005, a menudo porque la informacin necesaria no est accesible despus de la
conversin.

Fase de Upgrade VBTools Applications Upgrade Utility invoca directamente a


Visual Basic Upgrade Tool con los switches especificados.

Fase de Update Se aplican tareas al archivo Visual Basic 2005 resultante.

VBTools Applications Upgrade Utility crea primero el directorio de output especificado en


la lnea de comandos. Luego crea un subdirectorio con un nombre nico utilizando el
formato, project name.vbp_unique id. Todos los archivos asociados con el proyecto
Visual Basic 6.0 son copiados en este subdirectorio y son renombrados utilizando
extensiones de nombre de archivo pre-especificadas. La fase de preparacin es
efectuada en el proyecto Visual Basic 6.0 , y los archivos resultantes son reescritos al
subdirectorio. En la fase upgrade, Visual Basic Upgrade Tool es invocado para el
proyecto. Crea un subdirectorio llamado VBUpgradeFiles, el cual coloca los resultados
de la conversin. Despus de terminar la conversin Visual Basic 2005, la fase update
modifica patterns, y los archivos resultantes son copiados a la raz del directorio
especificado en la lnea de comandos como el directorio Out. Cualquier error que
ocurriera durante la conversin es escrito a un archivo de bitcora de errores ubicado
en el directorio de destino utilizando el nombre de archivo especificado en la lnea de
salida o utilizando el nombre por omisin, project-nameerror.log.

Lnea de Comandos VBTools Applications


Upgrade Utility
Assemblies: VBToolsAppConverters.dll, VBToolsAppUpgrade.exe
Ubicacin tpica de instalacin: C:\Program Files\Microsoft Dynamics SL\VT\VB 2005
Code Converter
Assemblies de actividades Custom: Se proporcionan muestras de ejemplo
Archivo de configuracin: VBToolsAppUpgrade.exe.config
El archivo VBToolsAppUpgrade.exe.config contiene parmetros configurables que son
utilizados por VBTools Applications Upgrade Utility. Las configuraciones definen valores

22

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

especficos para la aplicacin y pre- y post-procesos que se pueden ejecutar. Las


configuraciones de aplicacin soportadas son: VBTools Applications Upgrade Utility

SearchPath
<add key=searchpath value=comma-separated list of search
directories/>
SearchPath identifica la lista de directorios donde buscar archivos pre-convertidos
(por Ejemplo, .dh, .bas, .glb). Muchos de los archivos de encabezado y cdigo son
compartidos entre proyectos. Se puede requerir efectuar trabajo adicional despus
de la conversin inicial para finalizar los archivos comunes. Despus de completar
este trabajo, los archivos sern colocados en directorios comunes que pueden ser
referenciados que los utilizan. SearchPath ser utilizado por VBTools Applications
Upgrade Utility para buscar archivos en el proyecto que existe en directorios
comunes. Para cada archivo encontrado, se colocar un link en el archivo de
proyecto haciendo referencia a la ubicacin comn, y se borrar la copia
convertida local del archivo.
Los paths de los directorios pueden ser especificados como paths relativos o
absolutos. Si se utilizan paths relativos, entonces VBTools Applications Upgrade Utility
buscar los archivos relativos al directorio de salida del proyecto, y se crearn los
links como paths relativos. Por ejemplo, si el output del proyecto es
C:\GLApps\0101000 y se especifica un valor SearchPath de \DHfiles, VBTools
Applications Upgrade Utility buscar archivos en C:\GLApps\DHfiles.
El siguiente ejemplo SearchPath busca archivos preconvertidos en mltiples
directorios utilizando paths absolutos:
<add key="searchpath" value="d:\depot\lab01\common,
d:\depot\lab01\Application\common\dhfile"/>

SearchPathRecursion
<add key=searchpathrecursion value={true/false} />
Usted puede cambiar el comportamiento por omisin del SearchPath descrito ms
arriba. Por default se utiliza un SearchPath y todas las carpetas bajo el directorio
especificado para inclusion de archivo fuente comn. Configurando este valor en
False, solamente los directorios suministrados en el valor ingresado en SearchPath
sern utilizados (no causar recurrencia a las carpetas inferiores),
El siguiente ejemplo desactiva recurrencia de path (path recursion):
<add key=" searchpathrecursion " value="false" />

Font
<add key=Font value=font name; font size />
El font por omisin para los objetos Visual Basic 6.0 (tales como controles y labels) era
MS Sans Serif. Ese font no es soportado en Visual Basic 2005. Visual Basic Upgrade
Tool reconoce cualquier objeto que utiliza MS Sans Serif y lo convierte al font Arial.
Esta no es una opcin configurable. Sin embargo, los desarrolladores que deseen
utilizar un font diferente, tal como Microsoft Sans Serif o Tahoma, pueden especificar
un nombre y tamao de font en el archivo de configuracin. Durante el preproceso, VBTools Applications Upgrade Utility encuentra todos los controles que
utilizan font MS Sans Serif y los modifica para utilizar el font especificado en el
archivo de configuracin. Si no se especifica ningn valor en el archivo de
configuracin, los objetos son modificados para utilizar Arial.
El ejemplo siguiente especifica que todos los controles que utilizan el font MS Sans
Serif deberan ser convertidos a Tahoma, 8.25:
<add key="Font" value="Tahoma;8.25" />

Utilitario de Conversin

23

Nota: Los Fonts en Visual Basic 2005 son heredados, a diferencia de los fonts en Visual
Basic 6.0. Si no se especifica un font para un control de nivel inferior, el font es
heredado desde el control parent (tal como un frame o un formulario). En Visual
Basic 6.0, el valor de font por omisin es MS Sans Serif. En consecuencia, VBTools
Applications Upgrade Utility especifica el valor de font para todos los controles que
no tienen un font definido.

AssemblyPath
<add key=Assemblypath value=directory path for assembly files />
Similar a SearchPath, AssemblyPath identifica los directorios que contienen los
archivos de assembly.

Dependencias de Visual Basic Upgrade Tool


VBTools Applications Upgrade Utility invoca directamente a Visual Basic Upgrade Tool
para ejecutar la conversin principal. Este utilitario es instalado con Visual Basic 2005. El
path de este archivo debe estar en la variable de ambiente Path para asegurar que el
proceso de conversin se ejecuta exitosamente. Visual Basic Upgrade Tool reside
tpicamente en C:\Program Files\Microsoft Visual Studio 8\VB\VBUpgrade.

Parmetros de Lnea de Comandos


Visual Basic Upgrade Tool soporta el uso de diversos parmetros de lnea de comandos
para modificar el comportamiento de VBTools Applications Upgrade Utility. Algunos de
estos parmetros son parte de Visual Basic Upgrade Tool y se pasan a ese utilitario. Por
ejemplo:
USAGE: VBToolsAppUpgrade <project.vbp>
/?
Help
/Out directoryname (default is .\OutDir)
/Verbose
Outputs status and results
/NoLog
log file not created
/FormatCtl
Restores tab strips to original spacing
/LogFile filename (default is <ProjectFileName>.log
/ErrorLog filename (default is <ProjectFileName>Error.log

<Project.vbp> Indica el nombre del archivo de proyecto Visual Basic 6.0 a


convertir. Usted puede especificar un archivo de proyecto en el directorio actual o
el path completo de un proyecto a ser convertido (por ejemplo,
C:\Depot\Lab01\Backofficesource\Modules\GL\0101000.vbp).

/? Identifica la lista de switches que se utilizarn en la conversin.

/Out directoryname Especifica el directorio donde se crear el proyecto de


output final.

/Verbose Causa la generacin de output detallado.

/NoLog Especifica no se copiar una bitcora desde el paso Visual Basic Upgrade
Tool . El archivo de bitcora producido por Visual Basic Upgrade Tool no ser
copiado al directorio de destino final pero permanecer en el directorio de salida
de conversin de Visual Basic 2005.

/FormatCtl En algunas instancias, Visual Basic Upgrade Tool no mantiene el layout


original de los controles en el formulario. Estos indica al VBTools Applications Upgrade
Utility que se debera retornar el layout de un control especfico a su formato original.
Nota: Se aplica solamente al espaciado de los controles de tarjetas.

24

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

/LogFile filename Especifica el nombre del archivo de bitcora creado durante la


conversin Visual Basic 2005. Este archivo de bitcora no es copiado al directorio de
destino final pero residen en el directorio de salida de la conversin Visual Basic 2005.

/ErrorLog filename Especifica el nombre del archivo de errores creado por VBTools
Applications Upgrade Utility. Este archivo reside en el directorio del proyecto final.

Informacin Miscelnea
VBTools Applications Upgrade Utility est ubicado en el directorio \<Microsoft Dynamics
SL root>\
VT\VB 2005 Code Converter. La ubicacin de <Microsoft Dynamics SL root> es
especificada al momento de instalacin time. Por omisin, es C:\Program Files\Microsoft
Dynamics SL.

Utilitario de Conversin

25

Interfaz de Usuario de VBTools Applications


Upgrade Utility
Esta herramienta proporciona una interfaz grafica de usuario a VBTools Applications
Upgrade Utility.
Assembly: SolomonSDKConversionUI.exe
Ubicacin tpica de instalacin: C:\Program Files\Microsoft Dynamics SL\VT\VB 2005
Code Converter
Para ejecutar Microsoft Dynamics VBTools Application Upgrade Utility:
1. Ubique e inicie SolomonSDKConversionUI.exe. Aparece la caja de dilogo del
utilitario Microsoft Dynamics VBTools Applications Upgrade.

Figure 2: Microsoft Dynamics VBTools Applications Upgrade utility

Esta pantalla tiene un sistema de men que puede ser utilizado para escoger el
proceso de proceso de conversin, proyectos origen Visual Basic 6.0 para convertir,
path de salida del proyecto de destino, selecciones de configuracin, opciones y
selecciones de logging.
La caja Projects bajo VB6 Projects tiene capacidad drag-and-drop, aceptando
archivos de proyecto o los paths de archivos de proyecto. Esta es una forma rpida
de seleccionar los proyectos que usted desea convertir.
El men Options y las descripciones de cada comando disponible desde el men se
muestran ms abajo.

26

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Figure 3: Microsoft Dynamics VBTools Applications Upgrade utility, Options menu

Verbose Indica a Microsoft SL SDK Conversion utility mostrar en un formato de


salida largo. Esto es til cuando usted desea ver ms actividad durante el
proceso de conversin. Se incurre en algo de overhead para escribir la
informacin extra.

Show Activity Muestra toda la actividad de salida y permite una revisin del
proceso completo a medida que transcurre.

Long output paths Cambia el path de salida estndar (el nombre del proyecto
sin la extension de nombre de archivo ) para utilizar nombres derivados desde los
paths de proyecto de origen, si es que existen, o desde la configuracin del
proyecto Visual Basic 6.0 VersionFileDescription. Ya que CoreXT no permite
espacios en los nombres de archivos o carpetas, todos los espacios en los
nombres de carpetas son reemplazados por caracteres underscore (_).

Test Mode Pasa el parmetro /? al convertidor de la lnea de comandos para


que solamente muestre ayuda. Esto es til para probar el utilitario de lnea de
comandos para asegurarse de que est configurado adecuadamente para
ejecucin.

Logging La caja de dilogo Conversion Logging le permite ingresar opciones


de bitcora de conversin.
Todos los proyectos deconversin crean un archivo de bitcora por default. La
convencin de nombre del archivo de bitcora es el nombre del proyecto sin la
extensin de nombre de archivo, ms error.log (por ejemplo, el proyecto
MyApp.vbp tendr un archivo de bitcora llamado MyApperror.log). El archivo
de bitcora se almacena en la misma ubicacin que el archivo de salida del
proyecto.

Figure 4: Conversion Logging

En la caja de dilogo Conversion Logging, usted puede seleccionar:


Extended Logging Agrega toda la informacin de output a cada archivo de
bitcora de proyecto .
Single log file Combina en un archivo todos los archivos de bitcora de
proyectos de conversin.

Utilitario de Conversin

27

Conversion Configuration La caja de dilogo Conversion Configuration le


permite ingresar opciones de configuracin.

Figure 5: Conversion Configuration, Application Settings tab

Default Font (tarjeta Application Settings) Contiene el nombre del font utilizado
por default durante la conversin. Click el botn a la derecha para seleccionar
un font diferente.
Search Path Recursion (tarjeta Application Settings) Si esta check box est
seleccionada (la configuracin por default), las carpetas listadas en el path de
bsqueda y las carpetas bajo ellas sern utilizadas para buscar archivos preconvertidos. Si usted limpia la check box, el path de bsqueda incluir
solamente las carpetas listadas.
Search Path (tarjeta Application Settings) Lista las carpetas que sern revisadas
por archivos pre-convertidos. Para agregar una carpeta a la lista de path de
bsqueda, click el botn Add . Para quitar una carpeta desde la lista de path de
bsqueda, selecione la carpeta y click el botn Remove.

28

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

2. Click el botn flecha derecha


en la barra de men. Aparece la caja de dilogo
Select Source VBTools project for conversion.

Figure 6: Select Source VBTools project for conversion

3. Seleccione los proyectos que desea convertir y presione Open. Aparece la caja de
dilogo Browse for Folder, solicitndole seleccionar la carpeta de destino para la
salida de la conversin.

Figure 7: Browse for Folder

Utilitario de Conversin
4. Seleccione la carpeta de destino de la conversin, y click OK. Aparece la caja de
dilogo Conversion Session Preview.

Figure 8: Conversion Session Preview

5. Revise cuidadosamente sus selecciones y haga los cambios necesarios. Cuando


est satisfecho con sus selecciones, click OK para iniciar el proceso de conversin.

29

30

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Patterns

31

Patterns
Los siguiente patterns son manejados por el Conversion Toolkit antes o durante el
proceso de conversin.

Fase de Preparacin
El pattern de conversin de la fase de preparacin se ejecuta en el siguiente orden:

Registrar Versin 6.5 de SWIMAPI.dll

Preparar el Directorio de Destino de la Conversin

Mover y Renombrar Archivos de Proyecto Visual Basic 6.0

Leer Propiedades en el Archivo FRX

Quitar Comillas desde Propiedades Tools para Visual Basic

Quitar Controles Custom y Referencias desde Archivos

Establecer Valores Iniciales de Fonts

Preparar Tipos Definidos por el Usuario para Conversin

Guardar Informacin de Control

Renombrar sDate y sTime a Integer

Quitar Bindings Property Bindings del Control

Corregir los items Case-sentitive en el Archivo del Proyecto.

Registrar Versin 6.5 de SWIMAPI.dll


El primer paso en el proceso de conversin es establecer el ambiente de Tools for Visual
Basic de regreso a la base Microsoft Dynamics SL 6.5 . Este pattern logra efectuar la
tarea.

Preparar el Directorio de Destino de la Conversin


Este pattern crea una carpeta de trabajo en el directorio de destino que contendr el
proyecto Visual Basic 6.0 actualizado. Tambin copia todos los archivos del proyecto
original a su Nuevo directorio de trabajo y borra archivos y subdirectorios seleccionados
desde el directorio de destino. Este pattern no afecta subdirectorios de conversiones
anteriores.

Mover y Renombrar Archivos de Proyecto Visual Basic 6.0


Este pattern crea una carpeta de trabajo bajo el directorio de destino que contendr el
proyecto Visual Basic 6.0 actualizado. Tambin copia todos los archivos originales del
proyecto al nuevo directorio de trabajo.

Leer Propiedades en el Archivo .FRX


Visual Basic 6.0 ocasionalmente embeds valores de propiedades SAF en el archivo .frx .
Visual Basic Upgrade Tool convierte estas propiedades incorrectamente, permitiendo
que permanezca una marca de quotation y haciendo las propiedades no utilizables un
una aplicacin Visual Basic .NET . Este pattern encuentra las siguientes propiedades SAF
que han sido escritas en el archivo .frx y las mueve al archivo frm :

32

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

DBNav

PV

Mask

Trigger

Quitar Comillas desde Propiedades Tools for Visual Basic


Este pattern quita las marcas de comillas extra desde las propiedades en los archivos de
formularios.

Quitar Controles Custom y Referencias desde Archivos


Este pattern quita las siguientes controles custom y controles de barra de comandos y
referencias desde los archivos de proyecto .vbp y formularios:

SAFContainer

SAFDesigner

SAFNewFrame

SAFNewTab

MenuBarsFrm (CommandBars control)

Establecer Valores Iniciales de Font


El Conversion Toolkit le permite escoger un font por default para la conversin. Durante
la conversin, el font MS San Serif es cambiado a Arial. Para evitar un problema de
escala en pantallas Microsoft Dynamics SL , el nuevo font por default es Tahoma 8.5.

Preparar Tipos Definidos por el Usuario para Conversin


Este pattern convierte tipos de dato definidos por el usuario para mantener la sintaxis de
Visual Basic 6.0 para conversin posterior, permitiendo, el proceso de arreglos.

Guardar Informacin de Control


Este pattern guarda la informacin de control del proyecto original de modo que se
puede restablecer la posicion de los controles posteriormente en el post-proceso
(principalmente relacionado al control tab).

Renombrar sDate y sTime a Integer


Integer es el nuevo tipo de dato para sDate y sTime. Este pattern reemplaza todas las
ocurrencias de sDate y sTime por Integer.

Quitar la Propiedad Bindings del Control


Este pattern quita la propiedad Bindings del archivo de formularios (.frm) file. Esta
propiedad aparece algunas veces en un archivo de formularios Visual Basic 6.0 para un
control. Visual Basic 6.0 cargar el formulario sin errores, an si la propiedad no existe en
el control, causando que falle Visual Basic Upgrade Tool.

Corregir Items Case-sensitive en Archivo de Proyecto


Algunas veces las especificaciones de mdulos en el archivo de proyecto (.vbp) Visual
Basic aparecen en minsculas. El Visual Basic Upgrade Tool no procesar estas lneas.

Patterns
Esto ocurre tambin con Form y Class. Este pattern procesa el archivo de proyecto y
hace los cambios necesarios.

33

34

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Fase Update
Los patterns de la fase update de la conversin se ejecutan en el siguiente orden:

Registrar Version 7.0 de SWIMAPI.dll

Mover Archivos de Proyecto

Agregar Area Include para Kernel Exports

Actualizar Referencias SWIMAPI

Actualizar el Nombre de Assembly

Cambie Referencias SAF en el Archivo de Proyecto

Agregar Propiedad IsInitializing a Formularios

Modificar el Handler de Evento Form Load en Subformularios

Quitar el String SWIMAPI Typelib

Quitar Parmetros de Largo desde las Llamadas API

Actualizar Constantes Button de Actualizar Constantes de Botones de la Barra de


Herramientas

Manejar Instrucciones SetMousePointer

Actualizar Twips a Pixels en APIs

Modificar SAF Event Signatures

Convertir Buffers de Datos (.DH File Conversion)

Actualizar Direcciones de Parmetros API

Agregar Kernel Exports

Restore Nombres de Campo Tools for Visual Basic

Establecer Propiedades de Controles

Realinear Propiedad Top para Controles en Tarjetas

Establecer los Pasos 1 y 2 de Application Startup

Ubicar Archivos Ubicar Archivos Pre-convertidos

Ubicar Assemblies

Quitar las Advertencias y Notas de Conversin

Agregar SDKHelpProvider a Formularios

Agregar Version de Archivo (File Stamp Version)

Registrar Version 7.0 de SWIMAPI.dll


Este pattern actualiza SWIMAPI.dll al nuevo ambiente 7.0 despus de terminar la
conversin.

Mover Archivos de Proyecto


Este pattern mueve los archivos del proyecto de regreso al directorio Out especificado
en la lnea de comandos.

Agregar Area Include para Kernel Exports


Este pattern agrega una referencia a Solomon.VBTools.vb al archivo de proyecto.

Patterns

35

Actualizar Referencias SWIMAPI


Este pattern tiene muchas tareas .
1. Procesar el archivo del proyecto, encontrar la referencia a SWIMAPI y reemplazarla
con una referencia a Solomon.Kernel.dll. Las referencias a SWIMAPI son
reemplazadas como sigue:
<Reference Include="Solomon.Kernel">
<Private>False</Private>
<HintPath>Solomon.Kernel.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>

2. Quitar referencias a lo siguiente:

MSDATASRC

CUSTOMIZATIONMANAGER

AXCUSTOMIZATIONMANAGER

MSCOMCTLLIB

AXMSCOMCTLLIB

SAFCONTAINERLIB

AXSAFCONTAINERLIB

3. Encontrar las inclusiones de SWIM.bas y Applic.dh y quitarlas del proyecto. Estas


estn combinadas en un archivo nico (Solomon.Tools.vb).
4. Aunque no estrictamente relacionada a referencias SWIMAPI, esta tarea quita la
referencia a actualizar archivos de reporte colocada all por Visual Basic Upgrade
Tool.

Actualizar el Nombre de Assembly


Este pattern buscar el proyecto, y si encuentra que la conversin modific el nombre
de un ejecutable o assembly, lo repara. El nombre del assembly necesita reflejar el
nombre del ejecutable. Si ese nombre comenzaba con un carcter numrico, la
conversin lo marca para recuperarlo durante el pre-proceso.

Cambie Referencias SAF en el Archivo de Proyecto


Este pattern modifica el proyecto Visual Basic .NET para corregir referencias a y nombres
de tipo para los controles SAF.

Agregar Propiedad IsInitializing a Formularios


Este pattern busca clases de Formulario en los archivos. Si se encuentra una clase de
Formularios, se agrega una nueva propiedad llamada IsInitializing a la clase de
Formulario (Form class). Esta propiedad es True cuando la clase Form est efectuando
lgica de inicializacin mientras ejecuta el mtodo InitializeComponent, y False cuando
no lo est. Esta propiedad es verificada en cada lugar que encontramos el mensaje de
advertencia:
UPGRADE_WARNING: Event <formname>.<Subname> may fire when form is
initialized. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="88B12AE1-6DE048A0-86F1-60C0686C026A"
Nosotros reemplazamos este mensaje con el cdigo:

36

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL


UPGRADE_VBTOOLS: Added by VBTools proceso de conversin to maintain
backward compatibilidad with VB6
If IsInitializing = True Then Exit Sub

Esto se hizo para evitar que los comportamientos de un Nuevo evento tengan un efecto
negativo en la lgica de Visual Basic 6.0.

Modificar el Handler de Evento Form Load en Subformularios


La primera referencia a un subformulario debera ocurrir como resultado de una
llamada LoadForm() antes de la llamada ApplInit en Form1.Load. Con Visual Basic 6.0,
esto tena el efecto de causar que se cargara el formulario y se llamara a su handler de
eventos Load. Sin embargo, bajo Visual Studio 2005, el comportamiento es diferente.
Referirse simplemente a una variable subformulario no es suficiente para causar que se
active el evento de carga del formulario (Form Load). Por lo tanto, el cdigo que
antiguamente era llamado antes de ApplInit no es llamado hasta mucho despus en la
aplicacin. Alterar el orden en que el cdigo manejador de eventos se ejecuta tiene
por consecuencia errores sutiles difciles de detectar en una aplicacin Tools for Visual
Basic.
Para mantener el orden en que se llaman los handlers de eventos, el handler del evento
Load en todos los subformularios es renombrado como FormLoadCalled. El cdigo en
este mtodo es llamado tan pronto como la llamada FormLoad(subform) en el
subformulario sea efectuada antes de ApplInit. Si no hay un handler de evento en Load
en un formulario, no se va a llamar a nada.
Esta tarea encuentra las llamadas LoadForm hechas antes de ApplInit en Form1.Load y
crea una lista de los formularioss. La tarea procesa luego esta lista de subformularios y
determina se existe un handler de evento Load para ella. Si es as, el handler efectuar
la modificacin desde un handler de evento a un mtodo estndar. Habrn cambios
de nombre al FormLoadCalled. Este es un ejemplo:
Cdigo original:
Private Sub <SubFormName>_Load(ByVal eventSender As System.Object,
ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Convertido a:
'UPGRADE_VBTOOLS: <SubFormName>_Load was converted to
<SubFormName>_LoadFormCalled. This was done to preserve VB6 event order
compatibility. See the Issues section in the Visual Basic 2005 Conversion
Toolkit for Microsoft Dynamics SL for more information
Private Sub <SubFormName>_LoadFormCalled()

Quitar el String SWIMAPI Typelib


El Visual Basic Upgrade Tool crea un assembly temporal interop para SWIMAPI.DLL. Este
assembly interop es generado con un separador de nombre (namespace)
SWIMAPI.SWIMAPI. Todas las llamadas API que se encuentran en la aplicacin que estn
expuestas a travs del tipo de librera SWIMAPI son convertidas para que contengan el
separador de nombre (por ejemplo, SFetch1 se convierte en
SWIMAPI.SWIMAPI.SFetch1).
En Microsoft Dynamics SL 7.0, las llamadas a SWIMAPI ya no son expuestas mediante la
librera de tipos, de modo que la informacin de separador de nombre retirada de
todas las llamadas API es convertida de esta forma.

Patterns

37

Quitar Parmetros de Largo desde las Llamadas API


Ya no es necesario el parmetro LenB en muchas APIs de Microsoft Dynamics SL APIs. Ya
que el encabezado de datos es ahora un objeto, se utiliza el reflejo (reflection)en .NET
para obtener el tamao. Este pattern corregir esas APIs.

Actualizar Constantes de Botones de la Barra de Herramientas


La conversin efecta las actualizaciones necesarias en las constantes de la barra de
herramientas. Este pattern busca a travs de todos los archivos los usos de botones de la
barra de herramientas y los renombra a sus nuevos valores. Por ejemplo, la constante
InsertButton de la barra de herramientas es renombrada como TbInsertButton, y
SaveButton es renombrada como TbSaveButton. El renombrado fu necesario para
eliminar conflictos con CancelButton, la cual es una palabra clave bajo Visual Studio
2005.

Manejar Instrucciones SetMousePointer


Este pattern reemplaza asignaciones de valores a constantes definidas (por ejemplo,
DefaultMouseCursor and HourglassMouseCursor). Tambin detecta casos de HourGlass y
Default los cambia por HourglassMouseCursor y DefaultMouseCursor.

Actualizar Twips a Pixels en APIs


Debido a que no se utilizan twips en Visual Basic 2005. Si una aplicacin necesita
cambiar la posicin o tamao de un control o formulario, la tcnica soportada es
utilizar una de las llamadas SetProp. Por ejemplo, el siguiente cdigo cambia la
configuracin Left del control cprojectid:
Call SetProps(Form1, cprojectid, cprojectid, Left, 100)
Bajo Visual Basic 6.0, la configuracin Left est expresada en twips. Para mantener
compatibilidad backward, se traduce esta lnea de cdigo como sigue:
Call SetProps(Form1, cprojectid, cprojectid, Left,
VB6.TwipsToPixelsX(100))
Las siguientes Llamadas API estn sujetas a este pattern:

SetProps

MSetProp

DisplayModeSetprops

Modificar SAF Event Signatures


Este pattern modifica el handler de evento de control SAF para reflejar la forma en que
estaban en Tools for Visual Basic.

Convertir Buffers de Datos (.DH File Conversion)


Si una estructura es utilizada en una API de Tools for Visual Basic, se supone que es
informacin enlazada a Microsoft Dynamics SL. Estas estructuras son convertidas a una
clase SolomonDataObject. Este pattern encuentra variables locales que son pasadas a
las APIs en vez de estructuras. Si las variables son utilizadas en una llamada SetAddr,
VBTools Applications Upgrade Utility crea una declaracin local para convertir la
estructura a una clase SolomonDataObject.

38

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

El pattern tambin encuentra cdigo donde clases SolomonDataObject son copiadas


o asignadas como un todo (por ejemplo, bPstatus = nPstatus) y las convierte utilizando el
mtodo SolomonDataObject CopyClass (por ejemplo, bPstatus CopyClass(nPstatus).

Actualizar Direcciones de Parmetros API


Las siguientes APIs aceptan parmetros que representan la direccin fsica de un
campo de estructura:

Detailsetup

Detailsetup8

CurrencyInfo

CurrencyInfo2

CurrencyField

DecimalPlaces

Ahora que la mayora de las estructuras utilizadas en llamadas API son convertidas a
una clase SolomonDataObject (y son ahora, por inferencia, una instancia de clase
managed), la direccin fsica de una propiedad dada no tiene significado y no puede
ser pasada en forma segura a SWIM. Para mantener la compatibilidad backward, la
clase SolomonDataObject contiene el mtodo, AddressOf, el cual identificar la
ubicacin fsica del nombre de propiedad especificado.
Ejemplo:
Call CurrencyField(Form1.cctrltot, bBatch.CtrlTot, CURY_BASE_CALC)
es convertida a:
Call CurrencyField(Form1.cctrltot,bBatch.AddressOf("CtrlTot"),
CURY_BASE_CALC)

Agregar Kernel Exports


Este pattern scans cada archivo en el proyecto Visual Basic y agrega la instruccin
Imports Solomon Kernel si es que se declara una clase SolomonDataObject.

Restore Nombres de Campo Tools for Visual Basic


Este pattern recorre en loops a travs de cada archivo de cdigo, buscando
ocurrencias de bPes.Today_Renamed y bCuryInfo.Rate_Renamed, y reemplazndolas
con bPes.Today y bCuryInfo.Rate.

Set Control Properties


Este pattern asegura que el tamao y ubicacin de controles en tabs permanece
consistente con el Visual Basic 6.0 proyecto. Tambin quita el caracter ampersand
desde cualquier pgina de tabs que especific llaves accelerator en el control de
pginas de tabs de Visual Basic 6.0. El control de Tab WinForms Visual Basic 2005 Tab no
soporta llaves accelerator, y el ampersand se quit para evitar confusin.

Realinear Propiedad Top para Controles en Tarjetas


Visual Basic Upgrade Tool adjusta la propiedad Top para controles en tarjetas basados
en el tope de la TabPage en vez del TabControl. Este pattern encuentra todos los
descendientes directos de controles TabPage y ajusta la propiedad Top para tener en
cuenta esta diferencia.

Patterns

39

Establecer los Pasos 1 y 2 de Application Startup


Estos patterns establecen la lgica de startup de la aplicacin. Estn divididos en dos
tareas , una de las cuales debe efectuarse antes para quitar archivos que pueden
tener un equivalente pre-convertido con respecto al proyecto:

Establecer StartupObject en el archivo VBPROJ para la clase My.MyApplication

Establecer el archivo VBPROJ para "Enable Application Framework"

Inyectar los archivos apropiados en el proyecto para soportar "Enable Application


Framework"

My Project \Application.Designer.vb

My Project \Application.myapp

ApplicationEvents.vb

Asegurarse de que cualquier lgica en Sub Main es llamada desde el handler de


eventos MyApplication_Startup.

Todas las aplicaciones Tools for Visual Basic deben habilitar Application Framework.
Esta configuracin se habilita utilizando la check box en la tab Application en las
propiedades del proyecto. Habilitar el marco de trabajo de la aplicacin tiene el
desafortunado efecto lateral de no ser capaz de especificar Sub Main como el objeto
de startup. Por lo tanto, puede haber cdigo importante que no se ejecute en el startup
de la aplicacin. Este pattern determinar si Sub Main era el objeto de startup en Visual
Basic 6.0, y asegurar que el cdigo es llamado desde el handler de eventos
MyApplication_Startup. Sub Main es modificada para quitar la llamada Form1.Show si se
encuentra .

Ubicar Archivos Pre-convertidos


Este pattern busca en una lista de directorios los archivos que han sido convertidos. Si se
encuentra un archivo convertido previamente, se modifica el proyecto, se modifica el
proyecto de modo que apunte a ese archivo en lugar del archivo convertido por Visual
Basic Upgrade Tool. Este pattern tambin busca el archivo VBUpgrade.vb, el cual se
agrega mediante Visual Basic Upgrade Tool y lo quita.

Ubicar Assemblies
Este pattern busca en el directorio Assemblies (ubicado bajo el directorio de programa
Microsoft Dynamics SL) los assemblies que estn asociados con el proyecto. Si se
encuentra un assembly, la referencia al proyecto es actualizada para que apunte a ese
directorio .

Quitar las Advertencias y Notas de Conversin


Este pattern quita desde los archivos del proyecto todas las advertencias de upgrade o
los issues manejados por los procesos de pre o post conversin.

Agregar SDKHelpProvider a Formularios


Este pattern implementa el help provider Microsoft Dynamics SL HTML en cada
formulario.

Agregar Version de Archivo (File Stamp Version)


Este pattern agrega una lnea de comentario a todos los archivos convertidos para
mostrar cul version de VBTools Application Conversion Utility fue utilizada. El texto del

40

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

comentario es 'VBTools Converter Version 7.0.xxxx.x (donde 7.0.xxxx.x es la versin


actual del producto).

Issues

41

Issues
Este tpico describe algunos de los issues relacionados con cdigo especfico de Tools
for Visual Basic que usted podra encontrar en el proceso de conversin y proporciona
las soluciones recomendadas.
Issue: Aparece el mensaje UPGRADE_VBTOOLS: Sub Main is now being called directly from
the My.MyApplication.MyApplication_Startup event handler o UPGRADE_VBTOOLS: Removed
Form1.Show method; this call is no longer needed to initially display Form1 at application
startup.
Ejemplo Visual Basic 6.0:
Sub Main()
Call SomeCodeBeforeFormLoad()
Form1.Show
Call SomeCodeAfterFormLoad()
End Sub
Ejemplo convertido resultante Visual Basic 2005:
'UPGRADE_VBTOOLS: Sub Main is now being called directly from the
My.MyApplication.MyApplication_Startup event handler. (For
discussion, refer to Issues section in document Visual Basic 2005
Conversion Toolkit for Microsoft Dynamics SL Release 7.0)
Public Sub Main()
Call SomeCodeBeforeFormShow()
'UPGRADE_VBTOOLS: Removed Form1.Show method; this call is no
longer needed to initially display Form1 at application startup. Any
code following this comment will execute prior to the Form1.Load
event handler, which results in different behavior than Visual Basic
6.0. (For discussion, refer to Issues section in document Visual
Basic 2005 Conversion Toolkit for Microsoft Dynamics SL Release
7.0)
Call SomeCodeAfterFormShow()
End Sub
En todas las aplicacionesl Tools for Visual Basic se debera seleccionar la check box
Enable Application Framework que se encuentra en la tarjeta Application de las
propiedades del proyecto. Habilitar el marco de trabajo de la aplicacin tiene el
desafortunado efecto lateral de no ser capaz de especificar Sub Main como el objeto
de startup. (Visual Basic 2005 causa cambios en el comportamiento de Sub Main que de
todos modos necesitan ser resueltos por el desarrollador. Vea
http://msdn.microsoft.com/library/default.asp?url=/library/enus/vbcon/html/vbup1047.asp por una explicacin.)
Para propsitos de Tools for Visual Basic, si la aplicacin especifica a Sub Main como el
modulo de startup, el cdigo ubicado en Sub Main es omitido a menos que algunas
acciones sean tomadas por VBTools Applications Upgrade Utility. VBTools Applications
Upgrade Utility agrega automticamente cualquier archivo y cdigo necesarios para
habilitar el marco de trabajo de aplicacin de Visual Basic 2005. Si una Sub Main estaba
presente in Visual Basic 6.0, este cdigo es llamado desde el cdigo de startup del
marco de trabajo. Este cdigo est ubicado en el nuevo archivo , ApplicationEvents.vb,
en la llamada del mtodo My.MyApplication.MyApplication_Startup(). VBTools

42

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Applications Upgrade Utility inserta este mensaje inmediatamente antes de Sub Main
para indicar el cambio en comportamiento de startup.
El segundo mensaje UPGRADE_VBTOOLS est relacionado con la llamada Form Show
que ocurre generalmente en Sub Main(). Si se encuentra una llamada Form.Show() en
Sub Main, se quita esta lnea de cdigo y se inserta en su lugar el mensaje
UPGRADE_VBTOOLS que se encuentra en el ejemplo. Cuando est seleccionada la
check box Enable Application Framework en las propiedades del proyecto, el marco de
trabajo de la aplicacin Visual Basic muestra el formulario especificado en el momento
apropiado. VBTools Applications Upgrade Utility usa el formulario especificado en la
llamada Form.Show y lo inserta en la llamada del mtodo
My.MyApplications.OnCreateMainForm() que se encuentra en el nuevo archivo My
Project\Application.Designer.vb.
Resolucin: Despus de anotar los cambios, ejecute su cdigo para determinar si la
lgica en Sub Main funciona correctamente dado el nuevo comportamiento de startup.
En la mayora de los casos, cualquier cdigo que se ejecutaba antes de Form.Show()
debera continuar ejecutndose correctamente. El cdigo que se encuentra despus
del mtodo Show ahora se ejecutar antes del evento Form Load, lo cual es un
cambio en comportamiento. Mueva este cdigo al handler del mtodo FormClosed
(despus de screenexit), o al handler de eventos
My.MyApplication.MyApplication_Shutdown que se encuentra en ApplicationEvents.vb.
Issue:Si el evento Finalize() en una clase contiene llamadas Swimapi SQL, la aplicacin
se podra colgar porque mltiple threads podran bloquearse. La llamada SQL ms
comn en el evento Finalize() es la llamada Sqlfree().
Resolucin: Implemente la interfaz IDisposable en la clase y elimine explcitamente la
instancia de objeto en vez de configurar la instancia de la variable en Nothing.
Al implementar la interfaz IDisposable y llamar al mtodo Dispose explcitamente para
limpiar las instancias de objetos, la aplicacin evita la eliminacin de los objetos por el
garbage collector de .NET, tambin evita el uso de un separado thread. El problema
especfico es que el garbage collector thread podra liberar un cursor de servidor
reservado por el original thread, el cual no es manejado por las APIs de SQL Server
usadas por Swimapi.dll.
Para ver un video acerca de la interfaz IDisposable y como trabaja, vaya a
http://msdn.microsoft.com/
msdntv/episode.aspx?xml=episodes/en/20030501CLRBA/manifest.xml.
Para ver cdigo de ejemplo, vaya a http://msdn2.microsoft.com/enus/library/system.idisposable.aspx.
Issue: Aparece el mensaje 'UPGRADE_VBTOOLS: Invalid value passed to
SetMousePointer. Use a variable of type System.Windows.Forms.Cursor. (For discussion,
refer to Issues section in document "Visual Basic 2005 Conversion Toolkit for Microsoft
Dynamics SL Release 7.0") Call SetMousePointer(SomeInvalidValue).
Se cambi SetMousePointer en Tools for Visual Basic 7 para aceptar solamente variables
vlidas Windows Forms Cursor. Si el valor pasado a SetMousePointer no es una variable
del tipo System.Windows.Forms.Cursor, VBTools Applications Upgrade Utility insertar el
comentario indicado anteriormente a la llamada SetMousePointer.
Resolucin: Use una variable Cursor vlida en lugar de la variable indicada.
Issue: Aparece el mensaje UPGRADE_VBTOOLS: Event may fire when form is initialized .

Issues

43

Visual Basic Upgrade Tool detecta si ya existe en su cdigo cierto handler de eventos
para controles Windows. Hay un grupo de eventos que se activarn en un order
diferente del que ocurre en Visual Basic 6.0. Refierase al tpico MSDN , Event may fire
when form is initialized por informacin de respaldo. Cuando Visual Basic Upgrade Tool
detecta esta condicin en su cdigo, inserta un mensaje UPGRADE_WARNING.
VBTools Application Upgrade Utility detecta estas advertencias en su cdigo y
automticamente aplica la solucin sugerida en el tpico MSDN. Vea Agregar
Propiedad IsInitializing a Formularios.
Ejemplo:
'Visual Basic 6.0
Private Sub Form_Resize()
Call SomeCode ()
End Sub
'After VBTools Application Upgrade Utility
Private Sub Form1_Resize(ByVal eventSender As System.Object, ByVal
eventArgs As System.EventArgs) Handles MyBase.Resize
'UPGRADE_VBTOOLS: Event may fire when form is initialized. Added
to maintain backward compatibility with Visual Basic 6.0. (For
discussion, refer to Issues section in document "Visual Basic 2005
Conversion Toolkit for Microsoft Dynamics SL Release 7.0")
If IsInitializing = True Then Exit Sub
Call SomeCode()
End Sub
Resolucin: Examine el cdigo por comportamiento correcto. Establezca puntos de
corte en la primera lnea para observar nuevo comportamiento. Si el cdigo se ejecuta
correctamente, retire el comentario insertado si lo desea.
Issue: Aparece el mensaje UPGRADE_VBTOOLS: Calling a SAF controls handler de
eventos directly is not recommended and should be reviewed .
Llamar al handler de eventos de controles SAFD (Chk, Default, LineGotFocus, LineChk,
por ejemplo) directamente desde su cdigo no es recomendado. El Handler de
eventos, ya sea desde el Solomon Application Framework, WinForms o no, existe como
un mtodo genrico para liberar el acoplamiento y son generalmente para ser
llamados solamente por el componente que publica el correspondiente evento.
Mientras su cdigo se compilar si usted llama directamente cualquier handler de
eventos existente en el cdigo, podran haber situaciones donde no se ejecutara como
se desea.
Este es un ejemplo del pattern, y como VBTools Applications Upgrade Utility lo maneja:
'Visual Basic 6.0 Start
'cbatnbrH Chk event handler
Private Sub cbatnbrH_Chk(ChkStrg As String, retval As Integer)
End Sub

44

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL


'from another section of code
Dim ChkStrg As String
Dim retval As Integer
ChkStrg = "somevalue"
Call cbatnbrH_Chk(ChkStrg, retval)
'Visual Basic 6.0 End
'After VBTools Application Upgrade Utility
'cbatnbrH Chk event handler
Private Sub cbatnbrH_Chk(ByRef ChkStrg As String, ByRef RetVal As
Short) Handles cbatnbrH.ChkEvent
End Sub
'from another section of code
Dim ChkStrg As String
Dim retval As Short
ChkStrg = "somevalue"
'UPGRADE_VBTOOLS: Calling a SAF control's event handler directly is
not recommended and should be reviewed. There may be cases where
your code does not function correctly. (For discussion, refer to
Issues section in document "Visual Basic 2005 Conversion Toolkit for
Microsoft Dynamics SL Release 7.0")
Call cbatnbrH_Chk(ChkStrg, retval)

Resolucin: Una mejor prctica es encontrar cdigo comn existente actualmente en su


handler de eventos que pueda ser llamado en forma segura por el publicador del
evento y por su cdigo de aplicacin, y luego volver a generar ese cdigo en una
funcin comn que sea llamada por su cdigo de aplicacin y el handler de eventos.
Ejemplo:
'cbatnbrH Chk event handler
Private Sub cbatnbrH_Chk(ChkStrg As String, retval As Integer)
If ChkStrg = "SomeBadValue" Then
'Tell SWIM to display message 51, Entry no a proper
selection, please reenter.
retval = 51
Exit Sub
End If
End Sub
Si cbatnbrH_Chk es llamada desde SWIM, el cdigo resultante 51 hace que aparezca
en virtud del hecho que establecer retval en el contexto de un evento activado tiene
algn signicado para SWIM, y puede ocurrir con esa configuracin. Si cbatnbrH_Chk es
llamada directamente desde su cdigo, el hecho de que un error que ocurriera en el
handler de Chk no sea aparente a menos que usted verifique el valor de retorno y tome
la accin apropiada. Por ejemplo:
Dim retval As Integer

Issues

45

ChkStrg = SomeBadValue
retval = 0
Call cbatnbrH_Chk(ChkStrg, retval)
If retval = 51 Then
Mess(retval)
End If
To refactor:
'cbatnbrH Chk event handler
Private Sub cbatnbrH_Chk(ChkStrg As String, retval As Integer)
retval = CheckBatnbrH(ChkStrg)
If retval <> 0 Then Exit Sub
End Sub
'Direct call
Dim retval As Integer
retval = CheckBatnbrH(SomeBadValue)
if retval <> 0 Then
mess(retval)
End If
'Refactored code
Function CheckBatnbfH(ChkStrg as String) As Integer
If ChkStrg = SomeBadValue then
CheckBatnbfH = 51
Exit Sub
Endif
CheckBatnbfH = 0
End Function
Este es un ejemplo muy simple y probablemente no garantiza re-factoring ya que
funcionar correctamente como est Sin embargo, puede haber otros escenarios ms
complejos que requieren una cuidadosa revisin por parte del desarrollador. The VBTools
Applications Upgrade Utility traer este issue a su atencin con el fin de forzar un
examen del cdigo por correccin de cdigo.
Issue: Aparece el mensaje UPGRADE_VBTOOLS: <Form>_Load was converted to
<Form>_LoadFormCalled .
Ejemplo:
'Visual Basic 6.0 Form name is Form2
Private Sub Form_Load()
Dim X As Integer
End Sub

46

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL


'After VBTools Application Upgrade Utility
'UPGRADE_VBTOOLS: Form2_Load was converted to Form2_LoadFormCalled.
Added to maintain backward compatibility with Visual Basic 6.0. (For
discussion, refer to Issues section in document "Visual Basic 2005
Conversion Toolkit for Microsoft Dynamics SL Release 7.0")
Private Sub Form2_LoadFormCalled()
Dim x As Short
End Sub

Esta conversin se hizo para mantener compatibilidad de orden de eventos Visual Basic
6.0. En Visual Basic 6.0, la primera referencia a la propiedad hWnd de un formulario
causa que el formulario se cargue y que se active su evento load . The Tools for Visual
Basic pattern de aplicacin para subformularios es llamar a LoadForm en cada
subformulario durante el evento load de Form1() antes de ApplInit. Por ejemplo:
Call LoadForm(Form2)
Call ApplInit
En LoadForm, la propiedad hWnd del formulario especificado es referenciada
directlamente en cdigo, haciendo que el formulario se cargue fsicamente pero que
no se muestre, y se llama a su handler de eventos Form_Load. El factor clave a tener en
cuenta es que, en las versiones anteriores de Microsoft Dynamics SL , el evento form load
de todos los subformularios era llamado al comienzo de la aplicacin, antes que a
Applini, sin causar que se mostrara el formulario.
En Visual Basic 2005, usar la propiedad Handle (antiguamente hWnd) no es suficiente
para causar que se cargue un formulario. El evento load se activa solamente cuando el
formulario se muestra por primera vez, lo cual es mucho mas tarde en la vida de una
aplicacin tpica. Por lo tanto, una llamada API LoadDorm efectuada antes que Applinit
no causar que se llame al handler load de los formularios asociados al mismo punto
que lo es actualmente.
Resolucin: Porque el handler de eventos ser llamado despues de que el formulario
est realmente cargado (la primera llamada DispForm), usted no puede simplemente
llamar al handler de eventos directamente desde LoadForm para resolver el problema.
Esto tendra como resultado que el handler de eventos fuera llamado dos veces, una
para LoadForm y nuevamente cuando se muestra el formulario, lo cual podra tener
como resultado un comportamiento no deseado en la aplicacin.
LoadForm llamar una subrutina especial (a travs de .NET reflection) en la clase del
subformulario colocada all por VBTools Applications Upgrade Utility. Esta subrutina
contiene el cdigo que estaba anteriormente en el evento load del subformulario. Esto
tiene como resultado que el cdigo sea llamado en el mismo punto que lo es
actualmente.
Si algo de este cdigo debe ser ejecutado durante la carga fsica actual, puede ser
llevado de regreso al handler de eventos Load.
Issue: Aparece el mensaje de actualizacin Visual Basic 2005, UPGRADE_ISSUE:
Declaration type not supported: Array of fixed-length strings, cuando the VBTools
Applications Upgrade Utility encuentra una declaracin de arreglo. Por ejemplo:
'UPGRADE_ISSUE: Declaration type not supported: Array of fixedlength strings. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner
/local/redirect.htm?keyword="934BD4FF-1FF9-47BD-888F-D411E47E78FA"'
Dim companyID(4) As String*10

Issues

47

Resolucin: En la mayora de los casos, el arreglo puede ser definido simplemente como
un string sin largo fijo. Por ejemplo:
Dim companyID(4) As String
Solamente en los casos donde el arreglo es usado en un contexto que requiere un
miembro de largo fijo se necesita resolver el problema individualmente. El desarrollador
es responsable de determinar si el string miembro del arreglo debe ser de un largo fijo.
Issue: Aparece el mensaje de upgrade de Visual Basic 2005, UPGRADE_WARNING:
Couldn't resolve default property of object, si es que una variable es declarada sin un
tipo en Visual Basic 6.0. Por ejemplo:
Public SaveAccount, SaveSub As Object
SaveAccount = bGLTran.acct
En este ejemplo, SaveAccount es un tipo Variant. Los tipos Variant son convertidas a
objetos .NET durante el proceso de conversin. Este es un ejemplo convertido:
Dim SaveAccount As Object
Dim SaveSub As Object
'UPGRADE_WARNING: Couldn't resolve default property of object
SaveAccount. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner
/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
SaveAccount = bGLTran.acct
Nota: Este cdigo se compilar y quizs reflejar su intencin. Visual Basic Upgrade Tool
agrega este mensaje para forzarle a examinar la correcin lgica de esta lnea de
cdigo.
Resolucin: Revise la variable para determinar el tipo que est asignado a ella. Si la
variable puede ser asignada a diferentes tipos en el cdigo, quite el mensaje de
advertencia y deje el cdigo como est. Si la variable fu asignada solamente a un tipo
(String, o Short por ejemplo) cambie la declaracin a ese tipo.
Issue: Aparece el mensaje Visual Basic 2005 upgrade, UPGRADE_NOTE: varname was
upgraded to varname_Renamed, si se renombr una variable para resolver
potenciales conflictos won una palabra clave reservada.
Resolucin: Deje todas las ocurrencias como varname_Renamed, o seleccione un
nombre diferente y cambia todas las referencias a ella.
Issue: Aparece el mensaje The LenB function is not supported. Refer to MSDN topic
Function is not supported.
En muchos casos, LenB puede ser reemplazado por la funcin Len , pero se necesita
revisar el cdigo para asegurarse de que no se requiere el largo de bytes. Cuando se
utiliza con una variable de tipo String, LenB reportar el largo de bytes en lugar del largo
declarado. Ya que los strings son Unicode en Visual Basic 6.0, el largo de byte es
realmente el doble del largo declarado.
Cuando se utiliza con un tipo definido por el usuario (UDT), tal como una estructura,
LenB devuelve un largo de bytes que refleja la memoria actual, incluyendo
alineamiento de campos. En ciertos casos, el largo de una estructura no representa
realmente la suma del largo declarado de sus miembros, Por largo que refleja el layout
de memoria actual, incluyendo alineamiento de campos. En ciertos casos, el largo de

48

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

una estructura no representa realmente la suma del largo declarado de sus miembros.
Por ejemplo, examine este UDT:
'A sample UDT
Type MyStruct
string1 As String * 4
byte1 As Byte
string2 As String * 2
double1 As Double
End Type
Public bMyStruct As MyStruct
'Code that reports the length of the UDT, from LenB and Len
Dim i As Integer
i = LenB(bMyStruct)
MsgBox "Lenb(bMyStruct) = " + Str(i)

'Displays length of 24

i = Len(bMyStruct)
MsgBox "Len(bMyStruct) = " + Str(i) 'Displays length of 15
El largo actual declarado de MyStruct es 15, el cual es reportado utilizando la funcin
Len(). Sin embargo, LenB reporta un largo de 24. Esto es porque tanto string1 como
string2 estn representados en memoria como strings Unicode. Por lo tanto, ellos utilizan
dos bytes por caracter. Esto nos d un largo de 12. El largo de byte1 es 1, y doble1 tiene
un largo de 8. Esto nos d un largo total de 21, de modo que porqu LenB reporta 24?
Esto est relacionado con la forma en que los campos string son alineados en memoria
por Visual Basic 6.0. los campos string deben comenzar con una direccin de memoria
que es divisible por 4. De modo que, con el fin de alinearse correctamente, con la
declaracin de byte1, la ubicacin de inicio de string2 debera comenzar tres bytes
despus de la ubicacin de trmino del byte1. Para ilustrar, comente el byte1, y ejecute
su cdigo. LenB reportar un largo de byte de 20, cuatro menos que si byte1 hubiera
permanecido en la estructura, aun cuando byte1 por si solo toma un byte en memoria.
Los restantes tres bytes son simplemente padding para forzar el alineamiento correcto
de string2.
Resolucin: Se debe tener precaucin para examinar el uso de LenB y asegurarse de la
intencin. Para la mayor parte, una aplicacin Tools for Visual Basic usaba LenB en todas
las llamadas SQL, al igual que SetAddr, para proporcionar informacin a SWIM acerca
del uso de memoria de una estructura. Con la llegada de clases .NET, la funcin Len
est obsoleta con la excepcin de su uso con instancias de clase SolomonDataObject.
VBTools Applications Upgrade Utility quita los parmetros de largo desde todas las APIx
afectadas. Vea Quitar Parmetros de Largo desde las Llamadas API.
Las restantes ocurrencias deben ser examinadas para determinar si el largo de byte es
crtico para la lgica. Si no es necesario, se puede utilizar Len en reemplazo.
Issue: Aparece el mensaje de upgrade Basic 2005 , UPGRADE_TODO: "Initialize" must be
called to initialize instances of this structure. Por ejemplo:
Module ModulePVRECDH
Structure PVRec
<VBFixedArray(5)> Dim Language() As Byte
<VBFixedArray(29)> Dim PVId() As Byte
<VBFixedArray(7)> Dim QMProg() As Byte

Issues

49

Dim RecType As Byte


<VBFixedArray(1000)> Dim ProcAndFieldInfo() As Byte
'UPGRADE_TODO: "Initialize" must be called to initialize
instances of this structure.
Public Sub Initialize()
ReDim Language(5)
ReDim PVId(29)
ReDim QMProg(7)
ReDim ProcAndFieldInfo(1000)
End Sub
End Structure
Este error ocurre cuando tipos definidos por el usuario en Visual Basic 6.0 que utilizaban
arreglos y strings de largo fijo son convertidos a estructuras en Visual Basic 2005. Estas
estructuras requieren un paso de inicializacin para las partes de largo-fijo.
Resolucin: Incluya una llamada a structurename.Initialize. Para objetos de datos de
tipos definidos por el usuario convertidos a Microsoft Dynamics SL, el paso de
inicializacin no es necesario ya que el espacio de almacenamiento adecuado es
distribuido por los objetos de datos.
Issue: Aparece el mensaje CMDialog.flags field not supported. Esto ocurre porque en
Visual Basic 2005, una caja de dilogo especializada separada ha reemplazado la caja
CommonDialog.
Resolucin: Vea Quitar Parmetros de Largo desde las Llamadas API. Las restantes
ocurrencias deben ser examinadas para determinar si el largo de byte es crtico para la
lgica. Si no es necesario, se puede utilizar Len como una funcin de reemplazo.
Issue: La asignacin directa de una clase SolomonDataObject a otra tendr
consecuencias inesperadas. El siguiente cdigo es utilizado rutinariamente en
aplicaciones Microsoft Dynamics SL:
bOrders = nOrders
En Visual Basic 6.0, la asignacin directa entre variables de estructuras copiaba el
contenido de una estructura a otra. Sin embargo, en lenguajes .NET, la asignacin de
una variable de clase a otra cambia la referencia de la variable de modo que es la
misma que en la otra variable. En otras palabras, despus de asignar una variable de
esta forma, ambas variables referencian ahora la misma ubicacin de memoria. Esto
es importante si es que la variable en cuestion fu pasada a SetAddr durante
Form1.Load. En este caso, el kernel de Microsoft Dynamics SL localiza (tracks) la
ubicacin de memoria de la variable especificada en la llamada SetAddr. Si se cambia
accidentalmente el contenido de la variable asignando la variable a otra variable del
mismo tipo, la aplicacin dejar de funcionar correctamente.
Resolucin: Vea Convertir Buffers de Datos (.DH File Conversion) por informacin
acerca de este issue.
Para copiar correctamente los contenidos de una variable de clase
SolomonDataObject a otra cuando est escribiendo nuevo cdigo, utilice el mtodo
CopyClass. El siguiente ejemplo ilustra el mtodo apropiado para mover los contenidos
de una clase a otra :
bOrders.CopyClass(nOrders)
Nota: El Code Inspector de Microsoft Dynamics SL 6.5 verificar este issue.

50

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Issue: La propiedad CommonDialog CancelError (por ejemplo, CMDialog2.CancelError


= True) no es soportada en Visual Basic .NET.
Resolucin: Una llamada al mtodo ShowDialog devuelve el resultado al programa.
Revise el valor de retorno para determinar si se seleccion el botn Cancel , y luego
efecte la accin apropiada.
Issue: El eventoForm F9850002: Activate tiene un nuevo comportamiento. Los
comportamientos de algunos eventos han cambiado. Por ejemplo, un evento es
activado en un momento diferente que antes. Activate y Deactivate para el formulario
se activan ahora al navegar entre aplicaciones y no solamente al navegar entre
formularios.
Resolucin: El cdigo del evento debera ser analizado para que no se afecte el
impacto en la aplicacin.
Issue: Enviar un archivo a la impresora utilizando el control PrintDialog.
Resolucin:
1. Agregue un componente PrintDocument a la aplicacin.
2. Configure las propiedades del componente PrintDialog paralelas al antiguo control
de dilogo.
3. Configure los settings de impresora y documento PrintDialog:
PrintDialog1.Document = PrintDocument1
PrintDialog1.AllowSelection = True
PrintDialog1.PrinterSettings = New
PrinterSettings()
(donde PrintDialog1 es el control PrintDialog, y el componente PrintDocument es el
que usted est agregando)
4. Muestre el dilogo y obtenga la respuesta:
DlgResult = PrintDialog1.ShowDialog()
If (DlgResult = DialogResult.OK) Then
PrintDocument1.PrinterSettings =
PrintDialog1.PrinterSettings
PrintDocument1.Print()
End If
5. Para imprimir desde una rich text box (seleccionada o texto completo), agregue un
handler de eventos para PrintDocument:
Private Sub PrintDocument1_PrintPage(ByVal
sender As System.Object, ByVal e As
System.Drawing.Printing.PrintPageEventArgs)
Handles PrintDocument1.PrintPage
' This gathers the default settings of the document, or when
changed in the Page Setup hold the new margin values.
Dim rectDraw As New RectangleF(e.MarginBounds.Left,
e.MarginBounds.Top, e.MarginBounds.Width, e.MarginBounds.Height)
If (RichTextBox1.SelectionType <>
RichTextBoxSelectionTypes.Empty) Then
e.Graphics.DrawString(RichTextBox1.SelectedText,
RichTextBox1.Font, Brushes.Black, e.MarginBounds.Left,
e.MarginBounds.Top)
Else

Issues

51

e.Graphics.DrawString(RichTextBox1.Text,
RichTextBox1.Font, Brushes.Black, e.MarginBounds.Left,
e.MarginBounds.Top)
End If
End Sub
Issue: Crear configuraciones de propiedades sin utilizar SetProps, por ejemplo:
Form1.width = 400
Resolucin: Microsoft SL SDK requiere el uso de SetProps. Una omisin en hacerlo crear
problemas en Administrador de Adaptaciones, Importacin de Transacciones y en
muchas otras reas. Tambin causar resultados impredecibles despus de la
conversion. Cambie el ejemplo anterior de modo que quede como:
Call Setprops(Form1,Form1,Form1,Width,400)
Issue: Aparece el Error 188, Value of type array name cannot be converted to '1dimensional array of type.
Resolucin: La declaracin debe ser modificada para especificar un arreglo con una
lista vaca de elementos. Por ejemplo:
Private mItemList() As ItemProperties = New ItemProperties(){}
Nota: Revise el arreglo para asegurarse de que tenga el nmero apropiado de
elementos antes de usarlo.
Issue: El siguiente error puede ocurrir en aplicaciones que tienen pantallas que
contienen tarjetas:

Figure 9: Programming Bulletproof Error 10127

Resolucin: Bajo SSTab1 TabControl, cambia la apariencia del comportamiento a


Normal.
Issue: Usted no puede tener una llave de acceso para un control que no puede recibir
el foco (TabPage por ejemplo).
Resolucin: Para evitar confusion, el pattern Set Control Properties quita el ampersand
desde TabPage.

52

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Issue: Los controles SAF renombrados pierden sus propiedades especficas SAF. En raros
casos, un nombre de control SAF tendr conflicto con palabras reservadas de Visual
Basic y ser renombrado por Visual Basic Upgrade Tool. Por ejemplo, se convierte un
proyecto que contenga un control llamado cType, y el control cType control es
renombrado en el proyecto como cType_Renamed. Cuando el proyecto es cargado,
las propiedades especficas SAF cType_Renamed del control (por ejemplo, FieldName,
FieldClass, PV) pueden aparecer en blanco al ver en la ventana de Properties de Visual
Basic Properties. Esto ocurrir si los valores de la propiedad son almacenados en el
archivo .frx del formulario en vez del archivo .frm .
Resolucin: Traiga el archivo .resx para el formulario, encuentre el valor ingresado para
cType, y renmbrelo como cType_Renamed. Esto restablece el enlace entre el archivo
.resx y el control renombrado. Las propiedades deberan reaparecer. Note que el
nombre delcontrol, en este caso, es case-sensitive y debe coincidir exactamente.
Adems, si se sobrescribe el archivo.resx, se crea un nuevo valor para cType_Renamed,
y el valor original, correcto, se pierde. Re-ingrese la informacin de la propiedad del
control manualmente y vuelva a probar su aplicacin.
Issue: Aparece el mensaje de error 'VariableName' cannot expose type TypeName in
namespace 'Namespace' through the module 'ModuleName', indicando que Visual
Basic 2005 no permite declaraciones de variables pblicas con tipos privados. Por
ejemplo:
Private Class INVT_DESCR_TYPE
Inherits SolomonDataObject
< _
DataBinding(PropertyIndex:=0, StringSize:=30) _
> _
Public Property InvtID() As String
Get
Return Me.GetPropertyValue("InvtID")
End Get
Set(ByVal setval As String)
Me.SetPropertyValue("InvtID", setval)
End Set
End Property
End Class
Public bInvtDescr As INVT_DESCR_TYPE = New INVT_DESCR_TYPE
Resolucin: Cambie el scope modifier de la clase desde Private a Public o Friend. Public
significa que el tipo ser visible fuera del assembly de la aplicacin. Friend limitar el
scope del tipo a la aplicacin.
Issue: Aparece el mensaje Conversion of String to Date cannot occur in a constant
expression durante inicializacin de parmetros de datos opcionales en una funcin o
lista de parmetros sub.
Resolucin: Declare un tipo Friend para permitir que el tipo est accessible al assembly
completo.

Issues

53

Issue: Aparece el mensaje,UPGRADE_WARNING: Largo-fijo string size must fit in the


buffer . Los Strings de largo-fijo que fueron declarados en Visual Basic 6.0 son
convertidos a un arreglo de caracteres de largo-fijo. Por ejemplo:
<VBFixedString(8),System.Runtime.InteropServices.MarshalAs(System.Ru
ntime.InteropServices.UnmanagedType.ByValArray,SizeConst:=8)> Public
Crtd_Prog() As Char
Resolucin: En la mayora de los casos, estos campos no necesitan ser de largo-fijo y
pueden ser cambiados a strings de largo-variable:

Dim Crtd_Prog As String


Si la variable permanece como un arreglo de caracteres de largo-fijo, analice la
aplicacin para asegurarse de que los datos calzan en el arreglo.
Por ejemplo, muchos de los mdulos de la Serie Financiera contienen un archivo
especfico de la aplicacin que maneja informacin de fechas y tiempo. El archivo es
llamado ApplicationIDtds.bas.vb. Cada archivo contiene una estructura similar a este
ejemplo:
Structure TDSNull_T
Dim Crtd_DateTime As Integer
'UPGRADE_WARNING: Largo-fijo string size must fit in the
buffer. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="3C1E44260B80-443E-B943-0627CD55D48B"'
<VBFixedString(8),System.Runtime.InteropServices.MarshalAs(System
.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=8)>
Public Crtd_Prog() As Char
'UPGRADE_WARNING: Fixed-length string size must fit in the
buffer. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="3C1E44260B80-443E-B943-0627CD55D48B"'
<VBFixedString(10),System.Runtime.InteropServices.MarshalAs(Syste
m.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=10)>
Public Crtd_User() As Char
Dim LUpd_DateTime As Integer
'UPGRADE_WARNING: Fixed-length string size must fit in the
buffer. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="3C1E44260B80-443E-B943-0627CD55D48B"'
<VBFixedString(8),System.Runtime.InteropServices.MarshalAs(System
.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=8)>
Public LUpd_Prog() As Char
'UPGRADE_WARNING: Fixed-length string size must fit in the
buffer. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="3C1E44260B80-443E-B943-0627CD55D48B"'
<VBFixedString(10),System.Runtime.InteropServices.MarshalAs(Syste
m.Runtime.InteropServices.UnmanagedType.ByValArray,SizeConst:=10)>
Public LUpd_User() As Char
End Structure
Los strings de esta estructura no necesitan ser de largo-fijo. Por lo tanto, esta estructura
puede ser reescrita como:
Structure TDSNull_T

54

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL


Dim Crtd_DateTime As Integer
Dim Crtd_Prog As String
Dim Crtd_User As String
Dim LUpd_DateTime As Integer
Dim LUpd_Prog As String
Dim LUpd_User As String
End Structure

Issue: La obtencin del ndice de un control en un arreglo de controles se hace en


forma diferente.
Resolucin: El ndice de un control en un arreglo de controles debe obtenerse desde la
instancia del arreglo, no desde la instancia del control individual. Por ejemplo:
Dim idx As Short
For Each ctrl In cDiscount
idx = cDiscount.GetIndex(ctrl)
Next ctrl
Issue: Aparece el mensaje, Conversion of String to Date cannot occur in a constant
expression, durante la inicializacin de parmetros de fecha opcionales en la funcin o
lista de parmetros sub.
Resolucin: Ha cambiado la sintaxis de inicializacin. La version convertida queda
como:
Public Sub Init(, Optional ByRef DoNotAssign As Integer = 0,
Optional ByRef ETADate As Date = "01/01/1900")
La sintaxis vlida es:
Public Sub Init(, Optional ByRef DoNotAssign As Integer = 0,
Optional ByRef ETADate As Date = #1/1/1900#)
Issue: La Redimensin (Redim) de arreglos de clase SolomonDataObject (SDOs) y
estructuras que contienen campos SDO para agregar un nuevo objecto debe ser
instanciada.
Resolucin: Cuando un arreglo o estructura que contiene campos de clase
SolomonDataObject es redimensionado para crear un nuevo miembro del arreglo, el
nuevo miembro debe ser instanciado. En este ejemplo, SOShipPackBuf es un objeto de
datos Microsoft Dynamics SL:
ReDim SOShipPackBuf(0)
SOShipPackBuf(0) = New SOShipPack
Issue: Las variables miembros de clase SolomonDataObject o de arreglos de tipos SDO
deben ser explcitamente distribudas antes de utilizar.
Ejemplo:
'Visual Basic 6.0
Type Struct1
d(0 To 2) As Account
d2 As Account
End Type
Public MyStruct1 As Struct1

Issues

55

Type Struct2
Struct1Array(0 To 1) As Struct1
End Type
Public MyStruct2 As Struct2
Sub Main()
MyStruct2.Struct1Array(1).d(2).Descr = ""
End Sub
En este ejemplo, MyStruct2 contiene un arreglo de Struct2, el cual contiene un arreglo
de tipo Account. Note la lnea of cdigo en Sub Main que asigna una de las estructuras
Account a un campo Descr.
Visual Basic Upgrade Tools convierte el cdigo a lo siguiente:
'Visual Basic 2005
Structure Struct1
<VBFixedArray(2)> Dim d() As Account
Dim d2 As Account = New Account
'UPGRADE_TODO: "Initialize" must be called to initialize
instances of this structure. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="B4BFF9E08631-45CF-910E-62AB3970F27B"'
Public Sub Initialize()
ReDim d(2)
End Sub
End Structure
'UPGRADE_WARNING: Arrays in structure MyStruct1 may need to be
initialized before they can be used. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="814DF22476BD-4BB4-BFFB-EA359CB9FC48"'
Public MyStruct1 As Struct1
Structure Struct2
'UPGRADE_WARNING: Array Struct1Array may need to have individual
elements initialized. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="B97B714D9338-48AC-B03F-345B617E2B02"'
<VBFixedArray(1)> Dim Struct1Array() As Struct1
'UPGRADE_TODO: "Initialize" must be called to initialize
instances of this structure. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="B4BFF9E08631-45CF-910E-62AB3970F27B"'
Public Sub Initialize()
ReDim Struct1Array(1)
End Sub
End Structure
'UPGRADE_WARNING: Arrays in structure MyStruct2 may need to be
initialized before they can be used. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="814DF22476BD-4BB4-BFFB-EA359CB9FC48"'

56

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL


Public MyStruct2 As Struct2
Public Sub Main()
MyStruct2.Struct1Array(1).d(2).Descr = ""
End Sub

El primer item a notar es la creacin de Sub Initialize en las dos Structures. Si una
estructura convertida contiene un arreglo de cualquier tipo, se crea un mtodo Initialize
en conjunto con el comentario que establece que se debe llamar a Initializce para
inicializar la instancia de la estructura. En Visual Basic 6.0, los contenidos de la estructura
estaban disponibles simplemente por virtud de la declaracin de una variable de tipo
de estructura. In Visual Basic 2005, este no es el caso. Se debe utilizar ReDim
explcitamente para los miembros del arreglo.
Adems, si el tipo en el arreglo es una clase .NET, (como un SDO), cada miembro del
arreglo debe ser distribuido explcitamente o el contenido del arreglo mismo
permanecer vaco.
Resolucin: Asegurese de llamar a Initialize antes de cualquier uso de una estructura y
que a todas las variables de clases .NET se les asigna una nueva instancia.
En nuestro ejemplo, Struct1 contiene un arreglo de tipo Account, el cual es una clase
.NET . El siguiente cdigo debe ser agregado a Struct1.Initialize():
Public Sub Initialize()
ReDim d(2)
d(0) = New Account
d(1) = New Account
d(2) = New Account
End Sub
Ahora, el arreglo d sera inicializado apropiadamente cada vez que se llame al
mtodo Initialize().
El prximo paso es fijar la variable d2. Visual Basic Upgrade Tool generar cdigo que
trata de asignar una instancia de una clase .NET a la variable en la declaracin
Structure:
Structure Struct1
Dim d2 As Account = New Account
End Structure
La sintaxis no es vlida y no se compilar. Por lo tanto, se debe agregar una nueva a
Initialize() para instanciar una instancia de clase para la variable d2:
Public Sub Initialize()
ReDim d(2)
d(0) = New Account
d(1) = New Account
d(2) = New Account
d2 = New Account
End Sub
Note el mtodo Intialize() en Struct2. Utiliza ReDim para la variable Struct1Array, y debido
a que Struct1 es una estructura, nuevas instancias no necesitan ser explcitamente
allocated como se hace con las instancias de clase. Sin embargo, al utilizar
simplemente una instruccin ReDim para Struct1Array no causar que se llame al
mtodo Struct1 de cada estructura, de modo que no se puede utilizar en forma segura
instancias de Structur1Array. Struct2.Initialize debera tener el siguiente cdigo adicional:
Public Sub Initialize()

Issues

57

ReDim Struct1Array(1)
Struct1Array(0).Initialize()
Struct1Array(2).Initialize()
End Sub
El paso final es asegurarse de que Struct2.Initialize es llamada antes de usar. En Sub
Main, agregue la siguiente lnea:
Public Sub Main()
MyStruct2.Initialize()
MyStruct2.Struct1Array(1).d(2).Descr = ""
End Sub
Issue: Las llamadas a AddressOfque especifican un arreglo de elementos deben
especificar un ndice numrico para el elemento. Por ejemplo:
Call CurrencyField(TaxForm.Tx_cdettax(i),
bTaxCalc.AddressOf("DetTaxAmt(i)"), CURY_BASE_CALC)
(donde i is an index in the arreglo)
Resolucin: En algunos casos, la llamada al mtodo de clase SolomonDataObject,
AddressOf, especifica un arreglo de elementos. El ndice para ese elemento debe ser un
valor numrico. Este valor podra estar codificado en duro, por ejemplo:
Call CurrencyField(TaxForm.Tx_cdettax(i),
bTaxCalc.AddressOf("DetTaxAmt(0)"), CURY_BASE_CALC)
Sin embargo, en el ejemplo, una variable i es utilizada como un ndice. Una Buena
alternativa en este csao sera formatear el nombre de la variable utilizando
String.Format y retener el valor de la variable en el string:
Dim varName As String = String.Format(DetTaxAmt({0}),
i.ToString())
Call CurrencyField(TaxForm.Tx_cdettax(i),
bTaxCalc.AddressOf(varName), CURY_BASE_CALC)
Issue: Falla al ejecutar una API que usa el mtodo AddressOf de una clase
SolomonDataObject con el nombre de propiedad errneo. Esta situacin ocurre
cuando el nombre de la propiedad referenciada en el mtodo AddressOf ha sido
cambiado. Esto puede suceder si la variable original fu renombrada por VBTools
Applications Upgrade Utility como variable_Renamed.
Resolucin: Cambie el nombre de la propiedad en el mtodo AddressOf para hacer
coincidir el nombre en la definicin de clase SolomonDataObject. Por ejemplo, la
siguiente llamada est en el cdigo despus de la conversin:
Call CurrencyInfo(LEVEL0, bBatch, "Batch", "CuryId", "CuryMultDiv",
"CuryRateType",bBatch.AddressOf("CuryEffDate"),bBatch.Addre
ssOf("CuryRate_Renamed"))
Si el desarrollador cambi la variable CuryRate_Renamed a CuryRateValue en la
definicin de clase SolomonDataObject, la llamada API debe ser cambiada a:
Call CurrencyInfo(LEVEL0, bBatch, "Batch", "CuryId", "CuryMultDiv",
"CuryRateType",bBatch.AddressOf("CuryEffDate"),bBatch.Addre
ssOf("CuryRateValue"))

58

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Issue: Ocurren errores al hacer debug a un proyecto antes del primer breakpoint
posible en el cdigo (antes de Form.Load por ejemplo).
Resolucin: Establezca la configuracin a Debug y la ubicacin del directorio de
trabajo apropiadamente. Vea Debugging una Aplicacin por asistencia.
Issue: Los ejecutables de pre- y post-procesos de reportes aparecen brevemente
durante la ejecucin de reporte. En algunos casos, no se pueden cerrar despus de ser
mostrados.
Resolucin: Si no se pueden cerrar los ejecutables de pre- o post-procesos una vez que
se muestran, busque el siguiente cdigo en el evento Form_Closing:
Sub Form1_FormClosing(ByVal eventSender As System.Object, _
ByVal eventArgs As _
System.Windows.Forms.FormClosingEventArgs) _
Handles Me.FormClosing
Dim Cancel As Boolean = eventArgs.Cancel
Dim UnloadMode As System.Windows.Forms.CloseReason = _
eventArgs.CloseReason
Cancel = True
eventArgs.Cancel = Cancel
End Sub
Modifique el cdigo como sigue:
Sub Form1_FormClosing(ByVal eventSender As System.Object, _
ByVal eventArgs As _
System.Windows.Forms.FormClosingEventArgs) _
Handles Me.FormClosing
Dim Cancel As Boolean = eventArgs.Cancel
Dim UnloadMode As System.Windows.Forms.CloseReason = _
eventArgs.CloseReason
If (UnloadMode <> CloseReason.ApplicationExitCall) Then
Cancel = True
eventArgs.Cancel = Cancel
End If
End Sub
Issue: Se generan SDOs duplicados durante la conversin si es que son referenciados
dos veces en la misma llamada SetAddr(). Por ejemplo:
Public Class ginvoice_dateCls
Inherits SolomonDataObject
<DataBinding(PropertyIndex:=0)> _
Public Property Value() As Integer
Get
Return Me.GetPropertyValue("Value")
End Get
Set(ByVal Value As Integer)
Me.SetPropertyValue("Value", Value)

Issues

59

End Set
End Property
End Class
Public Class ginvoice_dateCls
Inherits SolomonDataObject
<DataBinding(PropertyIndex:=0)> _
Public Property Value() As Integer
Get
Return Me.GetPropertyValue("Value")
End Get
Set(ByVal Value As Integer)
Me.SetPropertyValue("Value", Value)
End Set
End Property
End Class
El problema es causado por:
Call SetAddr(NOLEVEL, "ginvoice_date", ginvoice_date, _
ginvoice_date)
Resolucin: Despus de la conversin, quite la declaracin de clase extra. Se
recomienda que la llamada SetAddr() sea modificada de modo que el ltimo
parmetro (null buffer) pase PNULL.
Call SetAddr(NOLEVEL, "ginvoice_date", ginvoice_date, PNULL)
Issue: Aparece el mensaje UPGRADE_WARNING: Lower bound of arreglo <array name>
was changed from 1 to 0. Los Arreglos en lenguajes .NET soportan solamente lmites
inferiores basados en cero. Vea el tpico MSDN , Upgrade Recommendation: Use ZeroBound Arrays, por referencia .
Resolucin: Tenga en consideracin que se incrementar el nmero de elementos en el
arreglo. Por ejemplo, un arreglo declarado en la siguiente forma en Visual Basic 6.0:
Dim c2(3 to 6) As Single
Ser convertido a sto:
Dim c2(6) As Single
En Visual Basic 6.0, el arreglo tena cuatro elementos, y en Visual Basic 2005, el arreglo
tiene siete elementos. En la mayora de los casos, el incremento en el tamao fsico de
un arreglo no afectar el trabajo de su cdigo. Usted puede an referenciar solamente
los elementos 3 al 6 si usted lo deseausted tendr solamente tres elementos extra al
inicio del arreglo. Si el tamao fsico del arreglo es importante para la lgica de su
programa, usted necesitar modificar el arreglo como:
Dim c2(3) As Single
Usted necesitar encontrar todo el cdigo que opera en el arreglo. Esto incluye
cualquier subs o funciones que puedan tomar el arreglo como un parmetro e
interactuar con l.
Note que las clases de SolomonDataObject que contienen arreglos sern compatibles
backward con la sintaxis 1-based. Esto es logrado utilizando atributos de cdigo que
especifican OptionBase y UpperBound de arreglos declarados en una clase
SolomonDataObject. El kernel en runtime generar este lmite utilizando las
configuraciones de atributos especificadas.

60

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Issue: Aparece el mensaje UPGRADE_ISSUE: Declaration type not supported: Array of


fixed-length strings cuando el Visual Basic Upgrade Tool encuentra una declaracin de
arreglo de strings que tienen largo fijo. Por ejemplo:
'UPGRADE_ISSUE: Declaration type not supported: Array of fixedlength strings. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner
/local/redirect.htm?keyword="934BD4FF-1FF9-47BD-888F-D411E47E78FA"'
Dim companyID(4) As String*10
Resolucin: En la mayora de los casos, el arreglo puede ser definido como un string sin
largo fijo. Por ejemplo:
Dim companyID(4) As String
Solamente en casos donde el arreglo es utilizado en un contexto que requiere un
miembro de largo-fijo se necesita resolver este problema en forma individual. El
desarrollador es responsable de determinar si es que el string miembro del arreglo debe
tener un largo fijo.
Issue: Aparece el mensaje UPGRADE_WARNING: Couldn't resolve default property of
object. Visual Basic Upgrade Tool inserta esta advertencia si se declara una variable sin
una especificacin de tipo. Por ejemplo:
Public SaveAccount, SaveSub As Object
SaveAccount = bGLTran.acct
En este ejemplo, SaveAccount es un tipo Variant. Los tipos Variant son convertidos a
objetos .NET durante el proceso de conversin. Este es el ejemplo convertido:
Dim SaveAccount As Object
Dim SaveSub As Object
'UPGRADE_WARNING: Couldn't resolve default property of object
SaveAccount. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner
/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
SaveAccount = bGLTran.acct
Nota: Este cdigo se compilar y quizs refleje su intencin. Visual Basic Upgrade Tool
utiliza este warning para forzarle a examinar la correccin lgica de esta lnea de
cdigo.
Resolucin: Revise la variable para determinar el tipo que est asignado. Si la variable
puede ser asignada a diferentes tipos en diferentes puntos del cdigo, quite el warning
y deje el cdigo como est. Si la variable se asigna solamente a un tipo (String o Short
por ejemplo), cambie la declaracin a ese tipo.
Issue: Aparece el mensaje UPGRADE_TODO: "Initialize" must be called to initialize
instances of this structure. Visual Basic Upgrade Tool detecta cuando los tipos definidos
por el usuario (UDTs) en Visual Basic 6.0 utilizaban arreglos de largo-fijo. Los UDTs son
convertidos a estructuras en Visual Basic 2005. Estas estructuras requieren un paso de
inicializacin para el ReDim del almacenamiento requerido para los arreglos. Por
ejemplo:
'Visual Basic 6.0
Type MyCustomType
w(0 To 2) As Long
y As Double
z As Integer
End Type

Issues

61

'Visual Basic 2005 conversion


Structure MyCustomType
<VBFixedArray(2)> Dim w() As Integer
Dim y As Double
Dim z As Short
'UPGRADE_TODO: "Initialize" must be called to initialize
instances of this structure. Click for more: 'mshelp://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="B4BFF9E08631-45CF-910E-62AB3970F27B"'
Public Sub Initialize()
ReDim w(2)
End Sub
End Structure
Resolucin: Incluya una llamada a structurename.Initialize. Para los tipos definidos por el
usuario convertidos a la clase SolomonDataObject, el paso de inicializacin no es
necesario, ya que el espacio de almacenamiento apropiado es asignado por los
objetos de datos.

62

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Tips and Tricks

63

Tips y Tricks
Debugging una Aplicacin
Cuando usted tiene construda una aplicacin exitosa y est listo para probarla, puede
comenzar a utilizar el debugger de Visual Studio para encontrar problemas lgicos de
la aplicacin. Esto requiere las siguientes modificaciones a la configuracin del proyecto
Visual Basic:

Cambie la configuracin de Configuration Manager a Debug Se necesita


cambiar esta configuracin si es que usted no puede encontrar el cambio entre las
configuraciones debug y retail en su IDE (ubicada generalmente en la barra de
herramientas). Siga los siguientes pasos para cambiar la configuracin de
Configuration Manager a Debug:
1. Click Build en la barra de men de Visual Basic.
2. Si aparece Configuration Manager en el submen Build, click en ella.
De otro modo, click Tools | Options en la barra de men
3. En la caja de dilogo Options, click Projects y Solutions.
4. Seleccione la check box Show advanced build configurations.
5. Click OK.

Ingrese un path de salida En Build output path de la tarjeta Compile del


proyecto, ingrese un path para el salida de debug que es especfico a su instalacin
de Microsoft Dynamics SL y la aplicacin que usted est construyendo. Por ejemplo,
si usted est haciendo debub a 0101000.exe, el path de output podra ser:
C:\Program Files\Microsoft Dynamics SL\GL.

Ingrese un directorio de trabajo En la tarjeta Debug del proyecto bajo Start


Options, ingrese un path para el directorio de trabajo de debug in Working directory.
Como en el ejemplo anterior, haga el path especifico para su instalacin y la
aplicacin que est construyendo.

Deseleccione Enable the Visual Studio hosting process En la tarjeta Debug,


asegrese de que no est seleccionada la check box Enable the Visual Studio
hosting process.

Shared Event Signatures Signatura de Eventos


Compartidos
Se puede utilizar un handler de eventos para responder a mltiples componentes del
mismo tipo de signatura de evento listando cada componente del grupo de palabras
clave Handles. Por ejemplo:
Private Sub TextBox_TextChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles TextBox1.TextChanged, _
TextBox2.TextChanged, _
TextBox3.TextChanged
MsgBox("single event handler for 3 text boxes")
End Sub

64

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Slowdown de Visual Studio IDE


Usted puede experimentar una disminucin de performance desde Visual Studio IDE
durante diseo y debugging. Los siguientes pasos podran ayudar a corregir esa
situacin:
1. En la ventana de menu, click Reset Window Layout.
2. Quite o renombre el archivo VSxxxxxx.dat (donde xxxxxx es especfico para su
instalacin) desde la carpeta \Documents and Settings\All Users\Application
Data\Microsoft\Visual Studio\8.0 .

Uso de la Task List de Visual Studio


La caracterstica de Task List en Visual Studio 2005 puede ayudarle a encontrar
comentarios de upgrade en su proyecto de modo que puede resolver cualquier
problema ocurrido durante el proceso. El proceso agrega las siguientes palabras clave
a los comentarios:

UPGRADE_ISSUE

UPGRADE_NOTE

UPGRADE_WARNING

UPGRADE_VBTOOLS

Para agregar palabras claves de upgrade a la lista de comentarios:


1. En Visual Studio, seleccione Options desde el menu Tools, y luego escoja Task List
desde la carpeta Environment. Aparece la pgina Task List de la caja de dilogo
Options.
2. En la caja Name, ingrese la palabra clave, y luego click Add para agregar la
palabra clave a la lista (token list).

Figure 10: Opciones

Tips and Tricks


Para ver los comentarios del proyecto:
En el menu View menu, click Task List.

Figure 11: Task List que muestra los comentarios de proyecto con las palabras clave upgrade

65

66

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Recursos

67

Recursos
Hay un gran cantidad de recursos disponibles para ayudarle a aprender acerca de la
actualizacin de aplicaciones desde Visual Basic 6.0 a Visual Basic 2005.

La documentacin Visual Basic .NET contiene una gran fuente de informacin.


Busque el tpico "Upgrading from Visual Basic 6.0" en lnea en
http://msdn.microsoft.com/library.

Usted puede acceder otros recursos para que le ayuden a convertir a Visual Basic
2005 dirigindose a la pgina Next Steps en el sitio Microsoft Visual Basic 6.0
Resource Center en http://msdn.microsoft.com/vbrun/staythepath/default.aspx.

Pare tener acceso a informacin en la pgina Migration del sito Web del Microsoft
Visual Basic Development Center, vaya a http://msdn2.microsoft.com/enus/vbasic/ms789186.aspx. Esta pgina contiene links actualizados a white papers,
webcasts, y otros recursos.

Estn disponibles numerosas muestras de cdigo desde Microsoft Visual Basic


Developer Center site para ayudar a los programadores Visual Basic 6.0 a aprender
la sintaxis de Visual Basic 2005.

Est disponible un libro en upgrading desde Microsoft Press. Vaya a Free Book Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual Basic .NET para bajar
Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual Basic .NET.

68

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Apndices A y B

69

Apndice A: Cambios de Cdigo


para Object Model de Solomon
Cambiar Cdigo para Utilizar Object Model de Solomon
Agregar una Referencia de Biblioteca de Object Model
Su aplicacin puede automatizar otras aplicaciones utilizando la API
StartAppAndAutomate y el Object Model de Solomon. En versiones anteriores de
Microsoft Dynamics SL, el Object Model de Solomon estaba disponible utilizando una
referencia a SWIMAPI.DLL. Sin embargo, en la versin actual de Microsoft Dynamics SL,
esta referencia ya no es vlida. Para utilizar el Object Model de Solomon en la versin
actual, simplemente agregue una referencia a Microsoft.Dynamics.SL.ObjectModel, el
cual est ubicado in el Global Assembly Cache (GAC). Este archivo se instala en
\Program Files\Common Files\Microsoft Dynamics SL.

Propiedades Default
Las propiedades Default no estn disponibles en .NET. Un ejemplo de cdigo (en
negritas) aparece en el primer prrafo ms abajo:
Dim sivAppObject As Microsoft.Dynamics.SL.ObjectModel.SIVApplication
sivAppObject = StartAppAndAutomate("0101000.exe", se, oe)
Dim sivProperty As Microsoft.Dynamics.SL.ObjectModel.SIVProperty
sivProperty = sivAppObject.Controls("SomeControl").Properties("SomeProperty")
sivProperty = "SomeNewValue"
Para evitar problemas, cambie el cdigo para leer:
Dim sivAppObject As Microsoft.Dynamics.SL.ObjectModel.SIVApplication
sivAppObject = StartAppAndAutomate("0101000.exe", se, oe)
Dim sivProperty As Microsoft.Dynamics.SL.ObjectModel.SIVProperty
sivProperty = sivAppObject.Controls("SomeControl").Properties("SomeProperty")
sivProperty.Value = "SomeNewValue"
Nota: Las propiedades default todava estn disponibles para propiedades que son
indexadas, tales como Controls() (el default es Item) y Properties() (el default es Item).

Cambiar Cdigo para Clientes de Object Model de Solomon


Soporte de Objetos Custom
Si su aplicacin expone un objeto custom utilizando la API ExposeCustomObject, tenga
en consideracin que esta tcnica es vlida solamente para objetos de Component
Object Model (COM) o Microsoft ActiveX . Ocurrir un error en runtime si usted trata de
automatizar controles .NET desde un cliente de Object Model de Solomon.
Si el objeto modificado era inicialmente un objeto COM , asegrese de incluir el atributo
de cdigo ComVisible(true) en la declaracin de clase.

70

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Ejemplo:
Option Strict Off
Option Explicit On
Imports System.Runtime.InteropServices
<ComVisible(True)>
Public Class clsVBTObjectModelApp
<methods and properties here>
End Class

Apndices A y B

71

Apndice B: Ejecutar
Aplicaciones conectadas - .NET
desde una Network
Para ejecutar una aplicacin .NET-connected desde una red, usted necesita configurar
los permisos correctos en la mquina del cliente. Esto se puede lograr con la
herramienta Code Access Security Policy (Caspol.exe), la cual es parte del .NET
Framework. Por ms informacin acerca de esta herramienta, vea Code Access
Security Policy Tool (Caspol.exe) en el sitio Web de Microsoft MSDN Library.
A las aplicaciones y assemblies proporcionados por Microsoft se les otorgan los permisos
correctos (Full Trust) por la instalacin de cliente Microsoft Dynamics SL . Todas las
aplicaciones y assemblies desde Microsoft tienen nombres en duro y estn marcadas
(signed) digitalmente. Los permisos configurados durante la instalacin del cliente
permiten acceso a todos los assemblies firmados con una llave en particular (la nica
utilizada por Microsoft). Sus aplicaciones y assemblies no estarn marcadas del mismo
modo, de modo que nuestros permisos no trabajarn para sus aplicaciones.
Usted necesitar configurar permisos Full Trust para sus aplicaciones. Hay suficiente
informacin en el sitio Web MSDN para lograrlo.
Algunas de las opciones are:

Otorgar permiso a todos los assemblies en una particular share.

Otorgar permiso a todos los assemblies firmados con una clave particular (su clave).

Otorgar permiso a assemblies individuales.

72

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL

Indice

Indice
A
Activate
nuevo comportamiento de 50
AddressOf
falla de API al utilizar 57
llamadas a 57
agregar
palabras clave de upgrade a
lista de comentarios 64
palabras clave de upgrade a
una lista de comentarios 64
referencia de biblioteca
Solomon Object Model 69
arreglos
error 188 51
ReDim de 54
asignar clase SolomonDataObject 49

C
clase SolomonDataObject
duplicada 58, 59
Clase SolomonDataObject
redim de arreglos y
estructuras 54
Configuracin de aplicaciones
VBTools Applications Upgrade
Utility 22
controles SAF
issues con controles
renombrados 52
Convenciones de documentacin 2
crear
configuraciones de
propiedades 51
custom object 69

D
Deactivate
nuevo comportamiento de 50
debugging
aplicaciones 63
ocurren errores 58
default
propiedades 69
duplicacin
clase SolomonDataObject 58

E
Ejecutar

utilitario de conversin 25
error
10127 51
188 51

F
Fases, VBtools Applications Upgrade
Utility 21
Funciones de impresoras 7

I
impresin
control PrintDialog 50
Impresin
cambios en declaraciones
para 7
index, obtener para un control en un
arreglo de controles 54
Ingresar
opciones de bitcora de
conversin 26
Invalid value passed to
SetMousePointer
Invalid value passed to
SetMousePointer 42
issues
<Form>_Load was converted to
<Form>_LoadFormCalled 45
asignacin directa de una clase
SolomonDataObject a
otra 49
Bulletproof Error 10127 51
Calling a SAF control's event
handler directly is not
recommended 43
clase SolomonDataObject
duplicada 58, 59
CMDialog flags field not
supported 49
CommonDialog CancelError
property 50
control PrintDialog 50
conversion of string to date 54
Couldn't resolve default property
of object 60
crear configuraciones de
propiedades sin utilizar
SetProps 51
Declaration type not
supported 60

73

74

Visual Basic 2005 Conversion Toolkit for Microsoft Dynamics SL


display de ejecutables de
reportes pre- y postproceso 58
error 188 51
Even may fire when form is
initialized 42
falla de API al utilizar
AddressOF 57
Fixed-length string size 53
indice de un control en un
arreglo de controles 54
Initialize must be called to
initialize instances of this
structure 60
la aplicacin se cuelga 42
LenB no soportado 47
llamadas a AddressOf 57
llamadas directas a eventos de
Microsoft Dynamics SL SDK 54
llave de acceso para un control
sin foco 51
los controles SAF renombrados
pierden propiedades 52
nuevo comportamiento en
eventos de formularios 50
redim de arreglo o estructura de
SolomonDataObject 54
Removed Form1.Show
method 41
renamed properties 52
resolving object default
property 47
se debe llamar a Initialize 48
Sub Main is now being called
directly from the
My.MyApplication.MyApplicat
ion_Startup event handler 41
tipo de Declaration no
soportado 46
variable renombrada 47
VariableName cannot expose
type TypeName in
namespace 52

K
keyword
Handles 63

L
la aplicacin se cuelga
la aplicacin se cuelga 42
LenB 47

Ll
llave de acceso

issue con 51

M
mensaje
Bulletproof Error 10127 51
campo CMDialog.flags no
soportado 49
conversion de string a date no
puede ocurrir en una
expresin constante 54
se debe llamar a Initialize 48
tipo de Declaration no
soportado 46
VariableName no puede
exponer tipo TypeName en
namespace 52
Microsoft Dynamics SL SDK events 54

N
no soportado
LenB 47

O
Opciones de bitcora de
conversin 26
Opciones de configuracin, utilitario
de conversin 27
Overview
Convenciones de
documentacin 2

P
palabras clave
agregar a una lista de
comentarios 64
PrintDialog control 50
project comments, viewing 65
properties, renamed 52
propiedades
Default 69

R
redim de arreglos
redim de arreglo o estructura de
SolomonDataObject 54
renamed
properties 52
renombrar
controles SAF 52

Error! Estilo no definido.


configuracin 27
ejecutar 25
ingresar opciones de archivo de
bitcora 26
men Opciones 25
vista preliminar de una sesin 29

S
Sesin de conversin, vista
preliminar 29
SetProps
utilizar 51
soporte
custom object 69
Sub Main is now being called directly from
the
My.MyApplication.MyApplication_Start
up event handler
Sub Main is now being called
directly from the
My.MyApplication.MyApplication
_Startup event handler 41

T
tarjetas de pantallas
error que involucra 51

U
unsupported
CMDialog flags field 49
CommonDialog CancelError
property 50
UPGRADE_ISSUE
Declaration type not
supported 60
tipo de declaracin no
soportado 46
UPGRADE_TODO
Initialize must be called 48
Initialize must be called to
initialize instances of this
structure 60
UPGRADE_VBTOOLS
<Form>_Load was converted to
<Form>_LoadFormCalled 45
Calling a SAF control's event
handler directly is not
recommended 43
Even may fire when form is
initialized 42
Removed Form1.Show
method 41
UPGRADE_WARNING
Couldnt resolve default
property of object 47
Couldn't resolve default property
of object 60
Event <formname>.<Subname>
may fire when form is
initialized 35
Fixed-length string size must fit in
buffer area 53
Utilitario de conversin

V
variable renombrada 47
VBTools Applications Upgrade Utility
configuracion de
aplicaciones 22
fases 21
viewing
project comments 65
Vista preliminar, sesin de
conversin 29

W
warnings
clase SolomonDataObject
duplicada 59
Couldnt resolve default
property of object 47
Couldn't resolve default property
of object 60
Event <formname>.<Subname>
may fire when form is
initialized 35
Fixed-length string size must fit in
buffer area 53

75