01. april 2004 - 08:49Der 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?
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
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
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
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
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.
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.
Synes godt om
Ny brugerNybegynder
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.