Kategorie: "MSOffice"

KleinerTipp zu ConnectionString (ADO / VBA) im SQL Server - Updated

english Version at the end

Ein kleiner Tipp zum (VBA / ADO) Connection-String des SQL Servers (getestet mit: Win10 64bit / Access 2013 32-bit / SQL Server 2017):

' ADOConn.ConnectionString = "Driver={SQL Server};Server=localhost\SQLEXPRESS;Database=Northwind;Trusted_Connection=Yes;APP=MeinName\MeinPC\MyApp1;"
' ADOConn.ConnectionString = "Provider='sqloledb';Data Source='localhost\SQLEXPRESS';Initial Catalog='Northwind';Trusted_Connection=yes;APP=MeinName\MeinPC\MyApp2;"
' ADOConn.ConnectionString = "Provider=SQLNCLI11;Server=localhost\SQLEXPRESS;Database=Northwind;Trusted_Connection=yes;APP=MeinName\MeinPC\MyApp3;"
' ADOConn.ConnectionString = "Driver={SQL Server Native Client 11.0};Server=localhost\SQLEXPRESS;Database=Northwind;Trusted_Connection=Yes;APP=MeinName\MeinPC\MyApp4;"

' ADOConn.ConnectionString = "Driver={SQL Server};Server=localhost\SQLEXPRESS;Database=Northwind;User ID=sa;Password=MyPW;APP=MeinName\MeinPC\MyApp5;"
' ADOConn.ConnectionString = "Provider='sqloledb';Data Source='localhost\SQLEXPRESS';Initial Catalog='Northwind';User ID=sa;Password=MyPW;APP=MeinName\MeinPC\MyApp6;"
' ADOConn.ConnectionString = "Provider=SQLNCLI11;Server=localhost\SQLEXPRESS;Database=Northwind;User ID=sa;Password=MyPW;APP=MeinName\MeinPC\MyApp7;"
' ADOConn.ConnectionString = "Driver={SQL Server Native Client 11.0};Server=localhost\SQLEXPRESS;Database=Northwind;User ID=sa;Password=MyPW;APP=MeinName\MeinPC\MyApp8;"

SELECT App_Name()

abrufen. 

Achtung: Überschreibt den APP-Wert der "normalerweise" übergeben würde.

Idee: Auch wenn man mit "normalisierten" Logins arbeitet, so kann man, wenn man pro User einen individuellen Connection-String zusammenbastelt, diesen an den SQL Server übergeben und man hat dann immer den "richtigen" Computer\Usernamen , so als ob man mit Trusted Connection arbeiten würde. Finde ich praktischer, als jedesmal in der Abfrage den Usernamen explizit übergeben zu müssen ... Zudem kann es einem die Fehlersuche auf dem SQL Server wesentlich erleichtern ...

Funktioniert mit allen oben angegebenen Connectionstrings

------------------------------------------ english Version ------------------------------------------

Small tip for using VBA ADO connection-string for SQL Server: (Tested in Win10 64bit / Access 2013 32-bit / SQL Server 2017)

' ADOConn.ConnectionString = "Driver={SQL Server};Server=localhost\SQLEXPRESS;Database=Northwind;Trusted_Connection=Yes;APP=MeinName\MeinPC\MyApp1;"
' ADOConn.ConnectionString = "Provider='sqloledb';Data Source='localhost\SQLEXPRESS';Initial Catalog='Northwind';Trusted_Connection=yes;APP=MeinName\MeinPC\MyApp2;"
' ADOConn.ConnectionString = "Provider=SQLNCLI11;Server=localhost\SQLEXPRESS;Database=Northwind;Trusted_Connection=yes;APP=MeinName\MeinPC\MyApp3;"
' ADOConn.ConnectionString = "Driver={SQL Server Native Client 11.0};Server=localhost\SQLEXPRESS;Database=Northwind;Trusted_Connection=Yes;APP=MeinName\MeinPC\MyApp4;"

' ADOConn.ConnectionString = "Driver={SQL Server};Server=localhost\SQLEXPRESS;Database=Northwind;User ID=sa;Password=MyPW;APP=MeinName\MeinPC\MyApp5;"
' ADOConn.ConnectionString = "Provider='sqloledb';Data Source='localhost\SQLEXPRESS';Initial Catalog='Northwind';User ID=sa;Password=MyPW;APP=MeinName\MeinPC\MyApp6;"
' ADOConn.ConnectionString = "Provider=SQLNCLI11;Server=localhost\SQLEXPRESS;Database=Northwind;User ID=sa;Password=MyPW;APP=MeinName\MeinPC\MyApp7;"
' ADOConn.ConnectionString = "Driver={SQL Server Native Client 11.0};Server=localhost\SQLEXPRESS;Database=Northwind;User ID=sa;Password=MyPW;APP=MeinName\MeinPC\MyApp8;"

If having a user individual APP=MeinName\MeinPC\MyAppN;

then one can fetch that with

SELECT App_Name()

Pay Attention: Overwrites the "original" APP value (which "normally" would be passed)

 Idea behind: Using an indiviual ADO Connection-String per user with VBA is simpler than passing the computer\user each time as parameter. So one is able to have the same information for "computer\user" even if not working with Trusted_connection but with "normalized" login-strings, without transmitting each time explicit user-name parameter ... Additionally it eases the debugging a lot as you know exactly which user etc ...

Does work with all shown ConnectionStrings 

Maybe helpful ?

Office Offline Hilfe verfügbar

Hi,

vielen ist die MSAccess - Uservoice - Site bei Microsoft, bei der man seine Wünsche bzgl. Access (es gibt für viele andere Produkte auch eine solche User-Voice site) "eintüten" kann, nicht bekannt. 

ABER: Oh Wunder, manchmal hört MS auch auf die Wünsche der User. Dies habe ich in https://access.uservoice.com/ gefundenden:

Offline Help

https://access.uservoice.com/forums/319956-access-desktop-application/suggestions/11174049-access-help

PLEASE give us back Access Help like it used to be in Access 2003!

9
votes
Vote
10 comments · Other
DONE! · Access TeamAccess Team (Admin, Microsoft) responded
The Help system is actually a shared piece of engineering owned by a different team and surfaced within all of the Office applications. As such, this isn’t really an action item that the Access development team can take in isolation of the existing Office system. 
We have passed on this feedback to the right team for their consideration. They did ask us to forward on the following information to you:
You can download an Access 2016 VBA CHM file on GitHub for offline use. You can find it here:
https://github.com/OfficeDev/VBA-content/blob/master/README.md 

You can find 2013 version of VBA documentation here:
https://www.microsoft.com/en-us/download/details.aspx?id=40326 

WOW - ich bin platt. Weiter so Microsoft.

Der einzige Wermutstropfen: Ich habe es (noch) nicht geschafft, diese Hilfe mit F1 zu verknüpfen ...

ADO - Abkündigung der Abkündigung <g> - die unendliche Geschichte

Hi,

Announcing the new release of OLE DB Driver for SQL Server 

dieser Microsoft Blogeintrag (hier ein großes Danke an Bernd Jungbluth für die Info) besagt, dass MS ADO nun doch weiterentwickelt wird.

Ich habe von Anderen bisher noch keine Rückmeldung erhalten, aber es sieht so aus, dass man "mit gutem Gewissen" mit ADO (Weiter-)Entwickeln kann, und man bei MS Access < - > SQL Server auf ADO setzen könne.  Ich habe aufgrund der "Depreciation von ADO" daher bisher ausschliesslich DAO verwendet ... 

Da sogar der Blog-Eintrag der "Depreciation selbst" (von 2011) hier mit einer Headline versehen wurde, scheint MS das wohl ernst zu meinen.

Was meint Ihr dazu ?

Nachtrag:

Eine Bestätigung / Reaktion zu diesem Artikel kam von der internationalen Access-User-Group (Juan e Soto), der den positiven Einfluss auf Access bestätigte

Access Expert Artikel

mfg

Klaus Oberdalhoff

Update - SQL Server Migration Assistant für Access - 32 / 64 Bit Problematik

see below the english translation of the article

Dieser SSMA 7.6 64bit Info Artikel beschreibt aus MS Sicht, was zu tun ist, um mit dem 64-bit Tool zu arbeiten. Dieser Artikel verschweigt die notwendige Option /quiet...

 der Workaround mit der Version SSMA 7.3 32-bit ist nicht notwendig, wenn vor der Installation der 64-bit Version folgendes beachtet:

 

entweder 

https://www.microsoft.com/en-us/download/details.aspx?id=13255 - Microsoft Access Database Engine 2010 Redistributable oder

https://www.microsoft.com/en-us/download/details.aspx?id=54920 - Microsoft Access Database Engine 2016 Redistributable

downloaden und - anders als beschrieben - die Kommando-Zeile öffnen und WICHTIG: mit dem Runtime-Switch /quiet installieren 

Access...._X64.exe /quiet

dann installiert es dieses Distributable ohne Probleme and man kann danach das 64.bit SSMA 7.6 installieren und problemlos nutzen

Habe es gerade auf meiner Maschine ausprobiert und es funktionierte nebenwirkungsfrei.

Habe jetzt bei mir SSMA 7.6 laufen - und funktioniert.

 

Aus aktuellem Anlass hier einige Infos zum "SQL Server Migration Assistant für Access" (SSMA)

Microsoft hat in seiner unendlichen und  unermesslichen Weisheit beschlossen, den SSMA für Access ab der Version 7.4 nur noch als 64 Bit Version anzubieten.

Meine persönliche Meinung zu diesem überaus sinnigen Entschluss ist weitgehend der Selbstzensur zum Opfer gefallen ...

 Verschlimmert wird dieser Entschluss durch folgende zwei Tatsachen:

  1. Die letzte 32-bit Version des SSMA für Access 7.3 steht bei Microsoft nicht mehr zum Download bereit.
  2. Es scheint überaus schwierig zu sein, einen vernünftigen 64-Treiber zu finden, der - bei einer installierten 32-bit Version von Office - sich vernünfig installieren lässt und mit 32-bit Versionen von Access zusammenarbeirtet.

 Die von mir hier vorgeschlagene Lösung ist:

Die in meinem Onedrive hier im Unterverzeichnis SSMA 1.73 verwendete Version 1.73 zu installieren. Diese ist die letzte Version, die auch als 32-bit Variante ausgeliefert wurde.

Er arbeitet problemlos mit SQL Server 2016 zusammen. Für SQL Server 2017 muss man wohl die neuere - 64-bit only - Variante verwenden und versuchen, diese zum Laufen zu bekommen.

NEU: Eigene Tests haben mir gezeigt, dass die Version 7.3 auch wunderbar mit der neuen SQL Server 2017 Version zurande kommt. (Man muss nur beim ersten Start "SQL Server vNext (Windows) -preview" angeben)

 

Tipps zur Arbeit mit SSMS

Für Access empfiehlt es sich dringend, die Datentypen anzupassen.

Der SQL Server Datetime2 Datentyp wird von manchen Treibern nicht korrekt als Datetime erkannt und sollte daher nicht verwendet werden. Daher ist besonders die Änderung der Zuordnung des Datentyps Date/Time (Access) in den bewährten Datetime wichtig.

Ebenso ist es wichtig, bei der Konvertierung einzustellen, dass für jede Tabelle ein Feld Timestamp erstellt wird.

 

Vor der Konvertierung sich unbedingt die Access Indizes ansehen, die Doppelten (die Access oft automatisch anlegt) löschen sowie sich alle Indizes zu notieren, die

Unique aber mit mehrfach NULL erlaubt sind (Unique Index with NULL), und diese vor der Konvertierung zu löschen.

 

Im SQL Server (ab 2008R2) können Unique Index with NULL einfach wie folgt neu erzeugt werden:

 

/****** Object:  Index [idx_Kunde_Matchcode_notnull]    Script Date: 09.04.2017 22:11:26 ******/

CREATE UNIQUE NONCLUSTERED INDEX [idx_Artikel_Matchcode_notnull] ON [dbo].[tblStamm_Artikel]

(

                [a_Matchcode] ASC

)

WHERE [a_Matchcode] IS NOT NULL;

GO

  

SQL Server Data Tools (SSDT)

 Neben der reinen Konvertierfunktion bietet dieses Tool die Möglichkeit, ein SSDT Projekt zu erzeugen. Ebenso kann auch ein SQL-Script erzeugt werden.

 Info zu SSDT:

 https://msdn.microsoft.com/de-de/library/hh272686(v=vs.103).aspx

https://docs.microsoft.com/de-de/sql/ssdt/download-sql-server-data-tools-ssdt

Wichtig: Gerade auch mit dem SQL Server 2017 ausprobiert: Man kann auch WUNDERBAR SSDT-Scripte oder SQL Scripte von irgendwelchen bereits bestehenden SQL Server Datenbanken (die NICHT mit dem SSMA konvertiert wurden) erzeugen. D.h. für die Arbeit mit SSDT ist der SSMA geradezu eine "Wunderwaffe" <g>

 SSDT für Visual Studio 2015 und SSDT für Visual Studio 2017 verwenden beide DacFx 17.2: Data-Tier Application Framework (DacFx) 17.2 herunterladen

Für den Fall, dass die Daten für VS2015 bei MS nicht mehr verfügbar sein sollten, sind sie im ssma Directory unter sonstiges enthalten.

 Nähere Infos siehe Readme.pdf im Onedrive-Ordner

 

 

------------------ english version -------------------------

 

SQL Server Migration Assistant for Access - 32/64-bit problematic

 

Update:  my workaround is obsolete if you just do the following before installing ssma 64bit:

This   SSMA 7.6 64bit Info Article   describes from MS's point of view what to do to work with the 64-bit tool,

but doesn't mention the Installation-option /quiet

If downloading either

https://www.microsoft.com/en-us/download/details.aspx?id=13255 - Microsoft Access Database Engine 2010 Redistributable or
https://www.microsoft.com/en-us/download/details.aspx?id=54920 - Microsoft Access Database Engine 2016 Redistributable

and - now the part that is not written down - 
open cmd-line and install it with the runtime switch /quiet

Access...._X64.exe /quiet

then it WILL install the distributable without message and without complaint

and you CAN afterwards install and use the 64-bit SSMA 7.6 without problem ....

Just did it on my machine and it works flawlessly .

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

using of SSMA 7.3 - 32-bit not longer necessarry 

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

Due to recent events here some info on "SQL Server Migration Assistant for Access" (SSMA)

Microsoft has decided in its infinite and immeasurable wisdom to offer the SSMA for Access as of version 7.4 only as a 64 bit version.

My personal opinion on this "very intelligent and thoughtful" decision has largely fallen victim to self-censorship...

  This decision is exacerbated by the following two facts:

  1. The last 32-bit version of the SSMA for Access 7.3 is no longer available for download at Microsoft.
  2. It seems to be extremely difficult to find a reasonable 64 driver that can install and work reasonably well with an installed 32-bit version of Office and with 32-bit versions of Access

The solution I have proposed here is:

Use the SSMA version 1.73, which i put   in my Onedrive   in  subdirectory SSMA 1.73. This is/was the last version, which was also delivered as a 32-bit version.

It works seamlessly with SQL Server 2016.   For SQL Server 2017 you probably need the newer - 64-bit only - use variant and try to get this to work.

NEW: My tests have shown me that version 7.3 is also wonderful working with the new version of SQL Server 2017. (You just have to specify when you first start "SQL Server vNext (Windows) -preview")

 

Tips on working with SSMS

For Access, it is strongly recommended to customize the data types.

The SQL Server datetime2 data type is not correctly recognized as a datetime by some drivers and therefore should not be used. Therefore, especially the change of assignment of data type Date / Time (Access) in the proven ‘old’ datetime is important.

Similarly, it is important to set the conversion to create a timestamp field for each table.

 Before conversion, be sure to view the access indices and record all indexes that are Unique with multiple nulls allowed (unique index with NULL), and delete them before conversion. SSMS does not convert them correctly.

 In SQL Server (2008R2 or later versions) Unique index with zero can easily be re-created as (filtered index) follows:

 

/ ****** Object:   Index [idx_Kunde_Matchcode_notnull]     Script Date: 09.04.2017 22:11:26 ****** /

CREATE UNIQUE NONCLUSTERED INDEX [idx_article_Matchcode_notnull] ON [dbo]. [TblStamm_Article]

(

                [A_Matchcode] ASC

)

WHERE [a_Matchcode] IS NOT NULL;

GO

  

SQL Server Data Tools (SSDT)

Besides pure conversion function, this tool provides the ability to generate an SSDT project. An SQL script can also be generated.

  About SSDT:

  https://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx

https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt

Tried (incl. SQL Server 2017) - Important: You also can create SSDT- scripts or SQL scripts (of any existing SQL Server databases   NOT   converted with the SSMA). This means that the SSMA is a "miracle weapon" <g> for working with SSDT

I personally always create TWO versions of the database, one WITH timestamp-field at the end of each table, and one WITHOUT. The reason: If ssdta is installed, VS offers on right-click of the database a script "create all CRUD-Stored procedures" for the database. I use the script WITHOUT the timestamp (and automatically create the opposite part with vba / dao on the Access side) then i delete the created database without timestamp ...

Both use DacFx 17.2 SSDT for Visual Studio 2015 and SSDT for Visual Studio 2017: Data-Tier Application Framework (DacFx) 2.17.

Tipp zur Konvertierung von Access 97 Datenbanken nach Access 2013 ff

Hi,

nachdem ich mit Access 2013 Schwierigkeiten hatte, Datenbanken des Formats Access 97 zu konvertieren, da Access 2013 diese Möglichkeit intern nicht mehr bietet, bemerkte ich, dass man die Datenbank mit dem Uralt Tool

JetComp.exe

konvertieren kann. 

Link zu JetComp (MS Support Seite)

Da JetComp nicht installiert werden muss, sondern eine "Standalone" Exe-Datei ist, kann man sie problemlos entpacken und direkt verwenden.

mfg

Klaus 

1 3 4