static ADOX.DataTypeEnum GetAccessFormats(DataColumn col)
{
switch (col.DataType.Name)
{
case "Boolean":
return ADOX.DataTypeEnum.adBoolean;
case "Byte":
return ADOX.DataTypeEnum.adUnsignedTinyInt;
case "Char":
return ADOX.DataTypeEnum.adVarWChar;
case "DateTime":
return ADOX.DataTypeEnum.adDate;
case "Decimal":
return ADOX.DataTypeEnum.adDecimal;
case "Double":
return ADOX.DataTypeEnum.adDouble;
case "Int16":
return ADOX.DataTypeEnum.adSmallInt;
case "Int32":
return ADOX.DataTypeEnum.adInteger;
case "Int64":
return ADOX.DataTypeEnum.adInteger;
case "SByte":
return ADOX.DataTypeEnum.adUnsignedSmallInt;
case "Single":
return ADOX.DataTypeEnum.adSingle;
case "String":
return ADOX.DataTypeEnum.adVarWChar;
case "TimeStamp":
return ADOX.DataTypeEnum.adGUID;
default:
return ADOX.DataTypeEnum.adUserDefined;
}
}
You can also ENUM the options
[Flags]
public enum ADOXFields
{
AccessText = DataTypeEnum.adVarWChar,
AccessMemo = DataTypeEnum.adLongVarWChar,
AccessNumericByte = DataTypeEnum.adUnsignedTinyInt,
AccessNumericInteger = DataTypeEnum.adSmallInt,
AccessNumericLongInteger = DataTypeEnum.adInteger,
AccessNumericSinglePrecision = DataTypeEnum.adSingle,
AccessNumericDoublePrecision = DataTypeEnum.adDouble,
AccessNumericReplicatieId = DataTypeEnum.adGUID,
AccessNumericDecimal = DataTypeEnum.adNumeric,
AccessDateTime = DataTypeEnum.adDate,
AccessCurrency = DataTypeEnum.adCurrency,
AccessAutoNumber = DataTypeEnum.adInteger,
AccessYesNo = DataTypeEnum.adBoolean,
AccessHyperLink = DataTypeEnum.adLongVarWChar
}
VB.NET
Public Shared Function GetAccessFormats(ByVal col As DataColumn) As ADOX.DataTypeEnum
Select Case (col.DataType.Name)
Case "Boolean"
Return ADOX.DataTypeEnum.adBoolean
Case "Byte"
Return ADOX.DataTypeEnum.adUnsignedTinyInt
Case "Char"
Return ADOX.DataTypeEnum.adVarWChar
Case "DateTime"
Return ADOX.DataTypeEnum.adDate
Case "Decimal"
Return ADOX.DataTypeEnum.adDecimal
Case "Double"
Return ADOX.DataTypeEnum.adDouble
Case "Int16"
Return ADOX.DataTypeEnum.adSmallInt
Case "Int32"
Return ADOX.DataTypeEnum.adInteger
Case "Int64"
Return ADOX.DataTypeEnum.adInteger
Case "SByte"
Return ADOX.DataTypeEnum.adUnsignedSmallInt
Case "Single"
Return ADOX.DataTypeEnum.adSingle
Case "String"
Return ADOX.DataTypeEnum.adVarWChar
Case "TimeStamp"
Return ADOX.DataTypeEnum.adGUID
Case Else
Return ADOX.DataTypeEnum.adUserDefined
End Select
End Function
public string ConvertFieldToUpper(string MyTable, string MyField)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
string strSQL;
strSQL = String.Format("UPDATE {0} SET {1} = UCase([{1}])", MyTable, MyField);
oAccess.DoCmd.RunSQL(strSQL.ToString(),null);
return "OK";
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}
public string ConvertFieldToLower(string MyTable, string MyField)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
string strSQL;
strSQL = String.Format("UPDATE {0} SET {1} = LCase([{1}])", MyTable, MyField);
oAccess.DoCmd.RunSQL(strSQL.ToString(), null);
return "OK";
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}
public string ConvertFieldToProper(string MyTable, string MyField)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
string strSQL;
strSQL = String.Format("UPDATE {0} SET {1} = STRCONV([{1},3])", MyTable, MyField);
oAccess.DoCmd.RunSQL(strSQL.ToString(), null);
return "OK";
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}
/// <summary>
///
/// </summary>
/// <param name="hideNavigationPane"></param>
/// <param name="myUIName"></param>
/// <param name="myUIXML"></param>
/// <returns>True/False</returns>
public bool InitializeDatabase(bool hideNavigationPane,
string myUIName, string myUIXML)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
oAccess.SetOption("DesignWithData", false);
oAccess.SetOption("Perform Name AutoCorrect", false);
oAccess.SetOption("Track Name AutoCorrect Info", false);
oAccess.SetOption("Auto Compact", false);
oAccess.SetOption("Confirm Record Changes", false);
oAccess.SetOption("Confirm Document Deletions", false);
oAccess.SetOption("Confirm Action Queries", false);
oAccess.LoadCustomUI(myUIName, myUIXML);
if (hideNavigationPane == true)
{
oAccess.DoCmd.RunCommand(Access.AcCommand.acCmdWindowHide);
}
return true;
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}
public bool ConvertReportToXPS(string myReport, string XPSFileName)
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
try
{
oAccess.DoCmd.OutputTo(Access.AcOutputObjectType.acOutputReport,
myReport, Access.Constants.acFormatXPS, XPSFileName,
System.Type.Missing, System.Type.Missing,
System.Type.Missing);
return true;
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}
public bool TablesAreEqual(string MyTableSource, string
MyTableToCompare, string MyIndexField)
{
try
{
OleDbConnection cnn;
using (DataSet ds = new DataSet())
{
OleDbDataAdapter da;
string cs =
oAccess.CurrentProject.Connection.ToString();
string strSQL =
String.Format("SELECT * FROM {0} LEFT JOIN {1} ON {0}.{2} = {1}.{2}WHERE {1}.{2} Is Null"
, MyTableSource, MyTableToCompare, MyIndexField);
cnn = new OleDbConnection(cs);
da = new OleDbDataAdapter(strSQL, cnn);
da.Fill(ds);
if (ds.Tables[0].Rows.Count <= 0)
return true;
else
return false;
}
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
// ----------------------------------------------------------------------------------------
// Author: Joao Tito Livio
// Company: MACL
// Assembly version: 0.0.*
// Date: 21-04-2009
// Time: 23:47
// Project Item Name: M3DatabaseUtilities.cs
// Project Item Filename: M3DatabaseUtilities.cs
// Project Item Kind: Code
// Class FullName: Macl.M3DatabaseUtilities
// Class Name: M3DatabaseUtilities
// Class Kind Description: Class
// Class Kind Keyword: class
// Procedure FullName: Macl.M3DatabaseUtilities.BackupCurrentDatabase
// Procedure Name: BackupCurrentDatabase
// Procedure Kind Description: Function
// Procedure Kind Keyword:
// Function Return Type Name: Boolean
// Function Return Type FullName: System.Boolean
// Function Return Type Alias: bool
// Purpose: Backup the Current database, CAN BE IN USE
// Parameters:
// - MyDestinationpathAndFile (string)() : Path and File (c:\backup.accdb")
// ----------------------------------------------------------------------------------------
public bool BackupCurrentDatabase(string MyDestinationpathAndFile)
{
try
{
Access.Application oAccess = ((Access.Application)
(Marshal.GetActiveObject("Access.Application")));
File.Copy(oAccess.CurrentProject.FullName,
MyDestinationpathAndFile);
return true;
}
catch (Exception)
{
throw;
}
finally
{
Marshal.ReleaseComObject(oAccess);
}
}
public bool ExecuteSqlFromFile(String MyConnectionString, String MyTextFilePath)
{
using (OleDbConnection sqlConnection = new OleDbConnection(MyConnectionString))
{
OleDbCommand cmd = new OleDbCommand();
try
{
using (StreamReader fh = new StreamReader(MyTextFilePath))
{
String MyText;
string s;
while ((s = fh.ReadLine()) != null)
MyText = s;
fh.Close();
cmd.CommandText = s;
}
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection;
sqlConnection.Open();
cmd.ExecuteNonQuery();
sqlConnection.Close();
return true;
}
catch (Exception)
{
throw;
}
finally
{
sqlConnection.Close();
cmd.Dispose();
}
}
}
// ----------------------------------------------------------------------------------------
// Author: Joao Tito Livio
// Company: MACL
// Assembly version: 0.0.*
// Date: 21-04-2009
// Time: 23:55
// Project Item Name: M3Data.cs
// Project Item Filename: M3Data.cs
// Project Item Kind: Code
// Class FullName: Macl.M3Data
// Class Name: M3Data
// Class Kind Description: Class
// Class Kind Keyword: class
// Procedure FullName: Macl.M3Data.ReturnRecordset
// Procedure Name: ReturnRecordset
// Procedure Kind Description: Function
// Procedure Kind Keyword:
// Function Return Type Name: Recordset
// Function Return Type FullName: ADODB.Recordset
// Function Return Type Alias: Recordset
// Purpose: Return a recordset from any OleDb provider
// Parameters:
// - MyConnectionString (string)() : Connection strin for the OleDb Conenction
// - MyTableOrSQL (string)() : Can be a Table or a SQL statement
// - MyCursorType (CursorTypeEnum)() : http://msdn.microsoft.com/en-us/library/ms677593(VS.85).aspx
// ----------------------------------------------------------------------------------------
public ADODB.Recordset ReturnRecordset(String MyConnectionString, String MyTableOrSQL,
ADODB.CursorTypeEnum MyCursorType)
{
ADODB.Connection cnn = new ADODB.Connection();
ADODB.Recordset rs = new ADODB.Recordset();
try
{
cnn.ConnectionString = MyConnectionString;
cnn.Open(null, null, null, 0);
//}
rs.Open(MyTableOrSQL, cnn, MyCursorType, ADODB.LockTypeEnum.adLockOptimistic, -1);
return rs;
}
catch (Exception)
{
throw;
}
}
/// <summary>
///
/// </summary>
/// <param name="MyPath"></param>
/// <returns>True/False</returns>
public bool GenerateLogDatabase(string myPath)
{
CatalogClass cat = new CatalogClass();
string strSQL;
string cs;
try
{
cs = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + myPath + ";" +
"Jet OLEDB:Engine Type=5";
strSQL = "CREATE TABLE Issues (mID AUTOINCREMENT, mUser TEXT(100) NOT NULL " +
", mError TEXT(100) NOT NULL, " +
"mDescription TEXT(100) NOT NULL, mDate DATETIME NOT NULL)";
cat.Create(cs);
using (OleDbConnection cnn = new OleDbConnection(cs))
{
OleDbCommand cmd = new OleDbCommand();
try
{
cmd.CommandText = strSQL;
cmd.CommandType = CommandType.Text;
cmd.Connection = cnn;
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
return true;
}
catch (Exception)
{
throw;
}
finally
{
cnn.Close();
cmd.Dispose();
}
}
}
catch (Exception)
{
throw;
}
finally
{
Marshal.FinalReleaseComObject(cat);
}
}
Great News
SharePoint Designer 2007 is now FREE!
Get it here

NOW MACL IS FREE AND IS IN CODEPLEX
My recent project with Libraries to use in Access 2007
Project Description
Improved Microsoft Access Class Libraries *DLL's* with utilities and Data Access.
---------------------------------------------------------------------------------------------
C#, Framework 2.0, 3.5
(Interop API Extensions)
The MACL Interop API Extensions tool uses features found in the .NET Framework 2.0 for now in the Alpha Version and its to be oriented to Framework 3.5 in the Beta Version. MACL Wraps the Access object model providing a more productive environment for the VBA developer. Specifically, it employs extension methods, functions, properties and a most effective data management relative to OLEDB Providers, like returning a single Recordset from any OLEDB Provider using ADODB . It is not a complete managed API for Access, it will reach there, but is designed to augment the raw object model in useful ways.
The Access Interop API Extensions, with its simplified and strongly-typed API, allows VBA developers to be as productive in this context as VBA developers.
The code was original developed in C# 3.0 and is divided in different classes, all classes are in constant update.
Forum Support
http://forum.macl.menos3.netProject Blog (Code Samples) http://macl.menos3.netOnline Documentation: http://www.menos3.net/pp
Today i want to talk about my experience with the DevExpress Components. I use it for about 2 years and the results are amazing, bellow is some samples about my last application. I can localize all components to Portuguese that is great!
JUST SHIFT TO: http://www.devexpress.com/Products/index.xml
AMAZING SEARCH

GREAT GRID CONTROL

MORE

Today, software consumers demand more than ever before from developers. The pressure to deliver more features with higher quality in less time has never been greater. Developer Express engineers components and IDE tools for Visual Studio® .NET to help developers and managers meet these increased demands for quality and functionality, by boosting productivity while eliminating the repetition that erodes precious creativity.
Embargoed until 1.29.09 10:00am PST. Actual email not to be reposted, information contained is for public disclosure once Embar
BEGIN
Dear MVP Community,
---------------------------------------------------------------------------
Abstract If you are active in the IT Pro or Enterprise community, this announcement will be important to you. On January 29, 2009, Microsoft will announce the Blocker Tool for Windows Vista SP1 and Windows XP SP3 will be removed on April 28th and May 19th, respectively. Our goal in announcing the removal of the blockers early is to provide IT Pros with an early notification to ensure they’re prepared to deploy the appropriate service pack when the blockers expire. This also provides technical communities with early information so that they may plan accordingly to assist customers. |
---------------------------------------------------------------------------
Background | Enterprises currently using the service pack blocker tool for either Windows Vista SP1 or Windows XP SP3 will be notified of the blocker tool’s removal and be prompted to install Windows Vista SP1 or Windows XP SP3 as appropriate. Microsoft recognizes the need for IT Pros to have this type of information in advance and wants to provide them with an early heads up to ensure they’re prepared to deploy their appropriate service pack when the blockers expire. | |
---------------------------------------------------------------------------
Rationale Service Packs will not automatically install on a machine even after the Service Pack Blocker tool expires. For service packs, you must accept the offering before installation will start. If Automatic Update is turned on, WU will alert you that it has an important update to install. If you do not want to install the update (Service Pack) simply decline to install and/or hide the update. If you do not have AU turned on, the service pack will not be offered until you open Windows Update and “Check for Updates.” |
---------------------------------------------------------------------------
Effective dates The expiration date for the Service Pack Blocker Tool for Windows Vista SP1 is April 28, 2009; for Windows XP SP3 the tool expires May 19, 2009. |
---------------------------------------------------------------------------
---------------------------------------------------------------------------
Who is affected IT Pro and Enterprise customers |
---------------------------------------------------------------------------
Actions Requested Provide support for IT Pro and Enterprise customers who have inquiries. |
---------------------------------------------------------------------------
END
You may also want to read at
http://www.microsoft.com/downloads/details.aspx?FamilyId=D7C9A07A-5267-4BD6-87D0-E2A72099EDB7&displaylang=en
PLEASE share with the Public
Dear MVP,
---------------------------------------------------------------------------
|
Actions Requested:
Win32/Conficker.B/Downadup infections
Please offer these links and resources to members of your community to help mitigate this threat.
MS08-067
Malicious Software Removal tool
History: Win32/Conficker.B
---------------------------------------------------------------------------
Abstract:
Based on feedback from MVPs and other sources, we are concerned about the rise in reported infections due to the worm Win32/Conficker.B also known as “Downadup.” Though systems which have already applied the out-of-band released MS08-067 in October 2008 are protected, unpatched system user have experienced system lockout and other problems.
Last week, we released a version of the Malicious Software Removal tool (MSRT) that can help remove variants of Win32/Conficker and other resources. Please share this information in your communities to help address this threat.
|
---------------------------------------------------------------------------
|
Background
Win32/Conficker.B exploits a vulnerability in the Windows Server service (SVCHOST.EXE) for Windows 2000, Windows XP, Windows Vista, Windows Server 2003, and Windows 2008. While Microsoft addressed this issue in October with Microsoft Security Bulletin MS08-067, and Forefront antivirus and OneCare (as well as other vendor’s anit-virus products) helped protect against infections, many systems that have not been patched manually through Server Update Services and Microsoft/Windows Update or through Automatic Updates have recently come under attack by this worm. Attacked systems may lock out users, disable our update services and block access to security-related Web sites:
In response to this threat, Microsoft has:
· Updated the January version of the MSFT to detect and remove variants of Win32/Conficker.B. You can download this version from the MSRT from either the Microsoft Update site or through its associated Knowledge Base article.
· Created the KB article 962007 “Virus alert about the Win32/Conficker.B worm” to provide public details on the symptoms and removal methods available to address this issue.
· Announced the release of the items and the virus threat itself on the Microsoft Malware Protection Center blog.
It is our hope that these resources can assist you in resolving issues with unpatched, infected systems and that you can apply MS08-067 to any other unpatched systems as soon as possible to avoid this threat.
|
Participe no grande evento técnico do ano e aproveite ao máximo a agenda do DevDays!
São 2 dias de conteúdos técnicos avançados, com mais de 50 sessões e 40 laboratórios, onde irá conhecer as mais recentes novidades da tecnologia Microsoft e contactar com reconhecidos especialistas das nossas Comunidades Técnicas.
> 2 dias de conteúdos técnicos avançados
> Mais de 50 sessões e cerca de 40 laboratórios
> Um evento para Programadores, Arquitectos e Designers
Contacte com Especialistas
Partilhe experiências, troque ideias, e aprenda com quem tem desafios semelhantes aos seus.
Inspire-se, divirta-se e mergulhe na Inovação
Encontre as melhores ideias e faça parte deste momento!
Aprenda sobre as mais recentes novidades tecnológicas como o Windows 7, Internet Explorer 8, Windows Azure e aprofunde os seus conhecimentos sobre desenvolvimento, web, design e experiência de utilização.
Venha ao DevDays!
ñ Saiba como o TeamSystem pode melhorar o desempenho da sua Equipa, tornando-a mais produtiva e eficiente
ñ A nova experiência de interacção digital com a Microsoft Surface
ñ Novos modelos de negócio potenciados pelo Windows Azure
ñ Veja como o Windows 7 e o IE8 elimina barreiras entre software, services e dispositivos e trazem ritmo acrescido ao seu dia-a-dia e da sua empresa
ñ Biztalk 2009 com uma solução de RFID muito interessante
ñ Consiga um novo nível de soluções Web com o Silverlight
ñ O potencial da informação geo-referenciada com o SQL Server 2008
Principais Conteúdos Temáticos
> Visual Studio 10 e .Net 4
> Microsoft Surface
> Windows 7 e Internet Explorer 8
> Windows Azure e Azure Services Platform
> Biztalk 2009
> Silverlight e WPF
> SQL Server 2008
> ASP.NET
> Windows Live Services
Participe! Valor de Inscrição: 100€ (com IVA incluído)
Secure and Monitor Your Windows and Office Environment -- Join the Beta Now http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=11014551&s1=68628015-2ccc-cbc7-31b9-0e76c3415474
Project Codename Sundance provides you with an end-to-end solution to help your organization plan, deploy, and monitor security baselines of Windows operating systems and Microsoft Office 2007 applications. The beta release is available now for your review through January 6, 2009. After joining the beta review program, bookmark this link to the program site to get the latest information about upcoming events.
Outlook new KB´s
Outlook 2002 Win32 EN: Description of the Outlook 2002 hotfix package: September 10, 2008
http://support.microsoft.com/kb/956642/EN-US
Outlook 2003 Win32 EN: Description of the Outlook 2003 Junk E-mail Filter update: December 9, 2008
http://support.microsoft.com/kb/958620/EN-US
Outlook 2003 Win32 EN: When you try to print multiple copies of an e-mail message in Outlook 2003, all the copies of the e-mail message are stapled together
http://support.microsoft.com/kb/959633/EN-US
Outlook 2003 Win32 EN: Description of the Outlook 2003 hotfix package (Engmui.msp, Olkintl.msp): December 16, 2008
http://support.microsoft.com/kb/960103/EN-US
Outlook 2003 Win32 EN: Description of the Outlook 2003 hotfix package (Riched20.msp): December 16, 2008
http://support.microsoft.com/kb/960421/EN-US
Outlook 2007 Win32 ML: Description of the Outlook 2007 Junk E-mail Filter update: December 9, 2008
http://support.microsoft.com/kb/958619/EN-US
Outlook 2007 Win32 ML: Outlook 2007 may stop responding when you select an e-mail message that is restricted by Information Rights Management
http://support.microsoft.com/kb/959632/EN-US
Outlook 2007 Win32 ML: Description of the Outlook 2007 hotfix package (Mso.msp,Outlook.msp): December 16, 2008
http://support.microsoft.com/kb/959642/EN-US
Outlook 2007 Win32 ML: Description of the Outlook 2007 hotfix package (Cpao.msp): December 16, 2008
http://support.microsoft.com/kb/960501/EN-US
Outlook 2007 Win32 ML: Description of the Outlook 2007 hotfix package (Mso.msp, Outlook.msp): December 16, 2008
http://support.microsoft.com/kb/960535/EN-US
Outlook 2007 Win32 ML: How to remove the Live Search Maps Add-in for Outlook
http://support.microsoft.com/kb/961081/EN-US
Outlook 2007 Win32 ML: Error message when you start Outlook 2007: "Cannot start Microsoft Office Outlook Cannot open Outlook window"
http://support.microsoft.com/kb/961100/EN-US
Parece que têm havido alguns problemas com a actualização
Security Update for Microsoft Office Excel 2007 (KB958437).
O resutado é um erro quando se tenta colar dados directamente do Excel 2007 para o Microsoft Access 2007
Os dados na Área de Transferência estão danificados, por isso o Microsoft Access não consegue colá-los. / Pode haver um erro na Área de Transferência ou pode não existir memória suficiente. Tente novamente a operação.
Para já não consigo arranjar nenhuma solução, para resolver o problema desistale esta actualização. Vou dando notícias.
MDB, DBF, XLS, XLW and DOC Files Recover
ENGLISH
I am testing to recover files in format:
- Access (MBD) - Until now 0 Offers
- Dbase e FoxPro (DBF) - Until now 0 Offers
- Excel (XLS e XLW) - Until now 0 Offers
- Word (DOC)- Until now 0 Offers
I'am going to offer the first 3 Repairs for each format
Contact: livio@live.com.pt
PORTUGUÊS
Estou a iniciar testes para reparar ficheiros:
- Access (MBD) - Até agora 0 ofertas
- Dbase e FoxPro (DBF) - Até agora 0 ofertas
- Excel (XLS e XLW) - Até agora 0 ofertas
- Word (DOC) - Até agora 0 ofertas
Vou oferecer as primeiras 3 recuperações de cada Formato
Contacto: livio@live.com.pt

Cloud Computing
Um conceito global. Uma nova arquitectura!
O Cloud Computing é um termo simples que representa a abstracção para uma complexidade de padrões, serviços e infra-estrutura. É considerado por muitos, como uma forma escalável, elástica e económica de implementar soluções, representando uma mudança significativa de paradigmas.
Neste contexto, participe neste fórum de Arquitectos
Agenda
09:00
Welcome coffee
09:30
Microsoft's Cloud Computing Platform : What it is and when to use it
Cloud computing looks like the biggest change to hit our industry in many years. The advent of cheap, scalable computing power available over the Internet will affect almost everybody who works in IT. But taking advantage of this shift requires understanding this new approach and how to exploit it.
In this half-day seminar, David Chappell looks at the big picture of cloud computing, then focuses in on Microsoft's new cloud platform technologies.
David Chappell
13:00
Almoço (livre)
14:30 / 18:00
Sessões a desvendar após o PDC (Professional Development Conference)
Architect David Chappell
David Chappell is Principal of Chappell & Associates in San Francisco, California.
Through his speaking, writing, and consulting, he helps software professionals
around the world understand, use, and make better decisions about new
technologies. David has been the keynote speaker for many conferences
and events on five continents, and his seminars have been attended by
tens of thousands of developers, architects, and decision makers in forty
countries. David's books have been translated into ten languages and used
regularly in courses at MIT, ETH Zurich, and other educational institutions.
In his consulting practice, he has helped clients such as Hewlett-Packard,
IBM, Microsoft, Stanford University, and Target Corporation adopt new
technologies, market new products, train their sales staffs, and create business plans.

Just an idea to support multilanguage IDE in a Access Database, what i do? i create a Table with the FORM NAME, CONTROL NAME and LANGUAGE, i am selectin the Language and comparing the Control Name with the Table Description, if you want you can ByVal the strLanguage = “pt-PT”, here it is my Function
Option Compare Database
Public Function yTranslaction(ByVal strFORM As String, _
ByVal frmFORM As Form)
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String
Dim