Avatar billede puppetmaster Nybegynder
01. april 2004 - 08:49 Der er 4 kommentarer og
2 løsninger

VBA kode til både SQL Server og Access

Jeg bruger følgende kode til at teste om et felt er afkrydset (Specialmaerket):

  If [Specialmaerket] Then
    [specialmaerket tekst] = "*"
  Else
    [specialmaerket tekst] = ""
  End If

I Access er feltet af typen Ja/Nej, men i SQL Server databasen er feltet af typen Tal.
Hvordan skal en hybrid af koden se ud, så begge databaser tilgodeses?
Avatar billede puppetmaster Nybegynder
01. april 2004 - 08:51 #1
Jeg får en Invalid use of Null ved brug af koden i SQL Server databasen (Access som frontend)
Fejlen opstår selvfølgelig i koden
If [Specialmaerket] Then
Avatar billede mugs Novice
01. april 2004 - 08:53 #2
Du skriver, at feltet i Access er Ja/Nej, men du tester på et tekstfekt. I et Ja/Nej felt i Access kan du også benytte 0 eller -1. Så vidt jeg husker svarer -1 til Ja. Så prøv i stedet at måle om feltet er -1
01. april 2004 - 09:47 #3
Hvis du har mulighed for at ændre datatyen på SQL serveren, så har den jo en datatype, som hedder Bit, hvilket svarer til Ja/Nej.

Men uanset hvad, så skal du sørge for at sætte default-value på feltet til 0. Og derefter kører en opdateringsforespørgsel, som sætter 0 i alle tomme poster. Derved vil du aldrig få fejlen med "Invalid use og Null" og kan bruge din kode som du plejer.

Hvos du vil være HELT SIKKER å ikke at få fejl, så skrive koden således:
If nz([Specialmaerket],0) Then
    [specialmaerket tekst] = "*"
  Else
    [specialmaerket tekst] = ""
  End If
Avatar billede puppetmaster Nybegynder
01. april 2004 - 09:56 #4
10-4 på den, mugs.
Thomas, det virker ikke så godt med en datatype som hedder Bit i SQL Serveren, når man bruger en Access frontend (har jeg skrevet i et tidligere spørgsmål).
Jeg kan se at dataene altid er enten 0 eller -1 i Access og 0 eller 1 i SQL Server, så jeg ender med følgende:
If [Specialmaerket] <> 0 Then
  [specialmaerket tekst] = "*"
Else
  [specialmaerket tekst] = ""
End If
01. april 2004 - 10:08 #5
ok, men jeg benytter altid Bit til Ja/Nej-felter uden problemer.

Og koden "If [Specialmaerket] Then..." virker også selvom feltet er 0 eller 1. Når du blot spørger på [Specialmaerket] uden at angive en værdi returneres true, hvis den blot er forskellig fra 0.
Avatar billede hugopedersen Nybegynder
02. april 2004 - 08:15 #6
Bruge Ja/Nej i Access og Bit på SQL  - test på True / False i din kode.
Det virker i hvert fald ganske udmærket for mig.

Problemet er at Access bruger -1 / 0 men SQL bruger 0 / 1 men testes der på True / False, så går det meget fint.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester