Access query vertalen naar SQL Server

Pagina: 1
Acties:

  • mkrauweel
  • Registratie: Maart 2002
  • Laatst online: 27-05 17:12
Weet iemand een handige manier om snel MS access query's te vertalen zodat deze gebruikt kunnen worden in Microsoft SQL Sever??

Verwijderd

laat ik hem nog maar een keer omhoog schoppen, want ik zit met hetzelfde probleem.

Weet iemand een manier?
Ik moet namelijk 1500 query's converteren :'(

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:22
Hmm... Zo'n werk zal dat wel niet zijn... Alletwee MS producten, dus het SQL dialect zal wel zeer gelijkaardig zijn.
Hoogstens wat functies veranderen denk ik...

https://fgheysels.github.io/


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Lijkt me zolang je geen specifieke access functies gebruikt en het gewoon op standaard SQL houdt dat je niet teveel problemen tegen moet komen.

Wat voor fouten krijg je terug dan :?

Want je kan altijd een hoop regexen in veel gevallen :)

Ja man


Verwijderd

ik maak gebruik van iif, en dat moet omgezet worden naar case, dacht ik.
Verder kent SQL server distinctrow niet, maar dat probleem is misschien nog wel snel mop te lossen door gewoon distinct

Verwijderd

heb je het al 's geprobeerd met de upsizing wizard? is meteen je database geconverteerd

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:22
Ik zou zeggen: gebruik zoveel mogelijk ANSI SQL
Dan hoef je enkel maar de evt functies te vervangen als je overgaat naar een ander DBMS

https://fgheysels.github.io/


Verwijderd

Op donderdag 11 juli 2002 11:19 schreef CLARDIMA het volgende:
heb je het al 's geprobeerd met de upsizing wizard? is meteen je database geconverteerd
dat gaat fout, je tabellen gaan wel mee, maar je query's niet en de upsizing wizard plaatst de tabellen ook niet goed in sql server

Verwijderd

Op donderdag 11 juli 2002 11:19 schreef whoami het volgende:
Ik zou zeggen: gebruik zoveel mogelijk ANSI SQL
Dan hoef je enkel maar de evt functies te vervangen als je overgaat naar een ander DBMS
Ze maken nu gebruik van access sql, het mag van mij best naar ansi-sql worden geconverteerd, de vraag is alleen wat is de snelste manier?
Is er een tool voor?
Je zou toch zeggen dat Microsoft hier een tool voor heeft geschreven, om die query's zover als mogelijk is te converteren van access naar sql server.

Verwijderd

Op donderdag 14 maart 2002 12:08 schreef mkrauweel het volgende:
Weet iemand een handige manier om snel MS access query's te vertalen zodat deze gebruikt kunnen worden in Microsoft SQL Sever??
Syntax is identiek, behalve bij LIKE statements, daar moet je de '*' vervangen door '%'

edit:

Distinctrow kent SQLServer niet idd. Distinct werkt op de gehele row. Distinct (field) met meerdere fields in de selectclause werkt dus anders in sqlserver dan in access


Die queries waar je over spreekt zijn opgeslagen parametriseerde queries, neem ik aan die je wilt omzetten naar stored procedures?

Wellicht is het een idee te kijken naar sql export mogelijkheden binnen access, want SQLServer kent geen '?' support, en verlangt named parameters in de stored procedures.

Verwijderd

de query's worden uitgevoerd vanuit een programma, deze staan dus niet in de database.

Verwijderd

Op donderdag 11 juli 2002 11:29 schreef Otis het volgende:

[..]

Syntax is identiek, behalve bij LIKE statements, daar moet je de '*' vervangen door '%'
sql server ondersteunt toch ook geen iif?

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Kan toch een Regex loslaten op de code waarin je

LIKE '**' vervangt door LIKE '%%'

bijvoorbeeld :)

Ja man


Verwijderd

Op donderdag 11 juli 2002 11:44 schreef Sire het volgende:

[..]

sql server ondersteunt toch ook geen iif?
Oh, nee idd. dat wordt iets van

SELECT CASE field
WHERE valueintable THEN valueneeded
WHERE valueintable2 THEN valueneeded2
END As NameInResultset
FROM Table

Als je queries in de clientcode staan is er niets aan de hand, dan moet je die daar vervangen en heb je verder geen geneuzel met stored procedures.

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

idd :)

Ja man


Verwijderd

dat is ook de bedoeling, het probleem is alleen dat bepaalde dingen in T-SQL anders zijn dan in Access.
Misschien dat daar iets op gevonden is.
Het is niet grappig om in elke query 7 iif statements te gaan vervangen door case statements. vooral niet als er in iif gebruik wordt gemaakt van and en or.

Verwijderd

Hier ff een voorbeeld:
code:
1
2
3
4
5
6
7
8
9
SELECT DISTINCTROW tblBewoner.Bewoner_ID, IIf(([tblMutatie_BewonerMutaties].[Afdeling_ID] Is Null) Or (Not [Overlijdingsdatum] Is Null),[tblBewoner].[Afdeling_ID],[tblMutatie_BewonerMutaties].[Afdeling_ID]) AS Afdeling_ID, IIf([overlijdingsdatum] is null,IIf([MutatieSoort]=3,Null,[tblMutatie_BewonerMutaties].[Mutatietype_ID]),0) AS MutatieType_ID, tblBewoner.OverlijdingsDatum, tblBewoner.Zoeknaam, tblBewoner.Geslacht, tblBewoner.Geboortedatum
FROM tblBewoner LEFT JOIN tblMutatie_BewonerMutaties ON tblBewoner.Bewoner_ID = tblMutatie_BewonerMutaties.Bewoner_ID
WHERE(((IIf([tblMutatie_BewonerMutaties].[Afdeling_ID] is null Or Not [Overlijdingsdatum] is null,[tblBewoner].[Afdeling_ID],[tblMutatie_BewonerMutaties].[Afdeling_ID])) In (SELECT tblPersoneelAfdeling.Afdeling_ID 
FROM tblPersoneelAfdeling 
WHERE (((tblPersoneelAfdeling.Personeel_ID)=463));))) AND ( (((tblMutatie_BewonerMutaties.EindDatum)>=date() Or (tblMutatie_BewonerMutaties.EindDatum) is null) AND ((tblMutatie_BewonerMutaties.MutatieSoort)=1 Or (tblMutatie_BewonerMutaties.MutatieSoort)=2)) OR (((tblMutatie_BewonerMutaties.MutatieSoort)=3 Or (tblMutatie_BewonerMutaties.MutatieSoort) is null) 
AND ((tblBewoner.Afdeling_ID)=0) AND ((tblBewoner.OverlijdingsDatum) is null)) OR ((Not (tblBewoner.OverlijdingsDatum) is null))) 
GROUP BY tblBewoner.Bewoner_ID, IIf([tblMutatie_BewonerMutaties].[Afdeling_ID] is null Or Not [Overlijdingsdatum] is null,[tblBewoner].[Afdeling_ID],[tblMutatie_BewonerMutaties].[Afdeling_ID]), 
IIf([overlijdingsdatum] is null,IIf([MutatieSoort]=3,Null,[tblMutatie_BewonerMutaties].[Mutatietype_ID]),0), tblBewoner.OverlijdingsDatum, tblBewoner.Zoeknaam, tblBewoner.Geslacht, tblBewoner.Geboortedatum
ORDER BY tblBewoner.ZoeknaamtblMedicijngebruik.Stop)> 10/7/2002)

Zulke query's krijg je niet met regex voor elkaar denk ik :`(

Verwijderd

No offence, maar die queries zijn belachelijk complex.

Ik begrijp niet waarom je IIF's in je select statement stopt, je retourneert dan toch beide fields en plaatst isnull() code in je dataverwerkingscode die de selectie maakt tussen twee fields? (Naast het feit dat testen null de ene waarde oplevert of de andere iewat gammel aandoet)

in T-SQL heb je de functie ISNULL(field, value), die 'value' plaatst ipv NULL indien field NULL is.

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Ik zal ff een regex expert aanroepen

Regexp expert in de lunch :(

Arien of Tomato schijnen er aardig wat van te kunnen :)

* BierPul is regex N00b verder }:O

Ja man


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op donderdag 11 juli 2002 12:06 schreef Otis het volgende:
No offence, maar die queries zijn belachelijk complex.
Queries zijn waarschijnlijk gemaakt met behulp van de wizard. (en dan krijg je die vreemde opeenstapelingen)

Zo niet, moet de persoon die ze wel gemaakt heeft dringend een ander beroep gaan zoeken, Putjes-schepper ofzo.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 02-09 09:31

Crazy D

I think we should take a look.

Op donderdag 11 juli 2002 12:06 schreef Otis het volgende:
Ik begrijp niet waarom je IIF's in je select statement stopt, je retourneert dan toch beide fields en plaatst isnull() code in je dataverwerkingscode die de selectie maakt tussen twee fields? (Naast het feit dat testen null de ene waarde oplevert of de andere iewat gammel aandoet)
In T-SQL heb je inderdaad de handige Isnull, maar die kun je niet zo gebruiken in een Access query :(
IsNUll(veld) geeft een boolean terug of de waarde null is of niet, dus je kunt niet zoals je in t-sql kunt doen IsNull(veld1, veld2) gebruiken. Een Iif is dan eigenlijk de enigste manier...

Ik vind het overigens wel een beetje raar dat je in Access fijn VBA kunt gebruiken in je query, terwijl imho veel dingen in t-sql veel makkelijker te doen zijn... jammer dat ze niet een t-sql achtig iets hebben ingebouwt in Access (desnoods iets minder uitgebreid), mjah das offtopic ;)

Exact expert nodig?


Verwijderd

Op donderdag 11 juli 2002 12:19 schreef Crazy_D het volgende:
[..]
Ik vind het overigens wel een beetje raar dat je in Access fijn VBA kunt gebruiken in je query, terwijl imho veel dingen in t-sql veel makkelijker te doen zijn... jammer dat ze niet een t-sql achtig iets hebben ingebouwt in Access (desnoods iets minder uitgebreid), mjah das offtopic ;)
Omdat Access in eerste instantie bedoeld was dat je middels draw 'n run programmering applicaties kon maken, dus in een query wizard je queries bouwen en die direct koppelen aan schermpjes. t-sql is bedoeld voor het behandelen van data, maar niet op zo'n manier dat je werk wat in hogere lagen veel beter kan, doet in de database.

Verwijderd

Het is verrot inderdaad dat je geen t-sql hebt gebruikt maar goed. Ben toch bang dat je een replace moet gaan doen. Word handwerk :( Veel succes :P
Zo niet, moet de persoon die ze wel gemaakt heeft dringend een ander beroep gaan zoeken, Putjes-schepper ofzo.
Hij heeft teminste werk... ;)
Pagina: 1