Avatar billede bol Nybegynder
26. august 2004 - 23:36 Der er 43 kommentarer og
1 løsning

access og My SQL

Jeg har tilknyttet en access applikation til en my SQL database - men nu har jeg problemer med mine afskrydningsbokse, fordi de ingår i en masse hændelser og beregninger - De har automatisk fået værdien/ felt egenskaben tinynt i My sql - Det gør at udtræk - forespøgsler m.v. ikke virker efter hensigten... Har virkelig brug for noget hjælp;-)


Bitten
Avatar billede Slettet bruger
26. august 2004 - 23:51 #1
Du mener vel tiny-int?
Int (Integer) er heltal. Og tiny-int er (hvis jeg ikke husker helt forkert) et heltal med en øvre grænse.
Og i  Access kan du også bestemmt felttypen til at være et heltal, så det skulle ikke være det helt store problem.  :-)
Avatar billede Slettet bruger
26. august 2004 - 23:53 #2
Avatar billede bol Nybegynder
26. august 2004 - 23:54 #3
jamen det er ved mine afkrydsningsbokse. Jeg har konventeret en række access tabeller til My sql og nu virker mine beregninger ikke længere - hvad skal felt egenskaben være i my sql hvis det er til en afskydsningsboks??
Avatar billede Slettet bruger
27. august 2004 - 01:58 #4
En afkrydsningsboks er bare et ja/nej-felt i databasen.
Men måske der er gået noget galt, da du konverterede database? Mange har haft lign. problemer.

Se her, måske dit svar ligger her:
http://www.eksperten.dk/list.phtml?Esession=7cc6f888fbfec8edbb5ad3965a7f4f3c&method=and&excerpt_on=1&find=access%2BMySQL&x=6&y=4
27. august 2004 - 08:40 #5
I Access returnerer et ja/nej-felt værdierne 0 og -1, mens Tinyint kun kan have positive tal (0-255). Hvis du binder et ja/nej-felt til en tinyint får du således værdierne 0 eller 1 (i stedet for -1).

En checkboks returnerer stadig 0 og -1, hvorfor søgninger går galt.

Man kan løse problemet ved f.eks. at bruge Abs-funktionen, som fjerner fortegn:

Eks:
Select.....Where MitJaNejFelt = Abs(Forms!MinFormular!MitJaNejfelt)

/Thomas
27. august 2004 - 08:41 #6
Problemet er det samme på MS SQL server. Her findes dog datatypen Bit, som kun kan indeholde 0 og 1. Så løsningen er den samme med MS SQL server.
Avatar billede bol Nybegynder
27. august 2004 - 09:36 #7
Thomas problemet er at mine felter i access inden konventering blot er en afkrydsningsboks - mine beregninger vikrer ikke mere - Er det noget jeg skal gøre i access inden jeg konventere det! feks. give det en standard værdi eller.. Mine returnere ikke -1 og 0 - men blot en afkrydsning (inden konventering) - HVilken felt egenskab ville du vælge i My sql til et Ja/nej felt
Avatar billede bol Nybegynder
27. august 2004 - 09:41 #8
Skal det være et tal felt i access inden konventering
27. august 2004 - 09:45 #9
En afkrydsningsboks i Access svarer til 0 ved blank og -1 ved afkrydset, ligesom sand/true = -1 og falsk/false = 0. Afkrydsningsboksen er blot den måde, som du vælger at vise dataene på.

Hvis du ændre datatypen til Integer (Heltal) i Access inden konverteringen burde det fungere, da My SQL også kender Integer.
Integer er dog en 'stor' datatype til et ja/nej-felt. Der vil således bruges væsentlig mere plads en nødvendigt, ligesom søgninger kan blive langsommere. Men hvis datamængderne tillader denne fråds, så er det den nemmeste løsning.

Alternativt skal dine beregninger og forespørgsler laves om :o(

/Thomas
Avatar billede bol Nybegynder
27. august 2004 - 09:49 #10
Integer - hvad vil det sige?? - Jeg vælger tal i datatype - Dernæst vælger jeg heltal i feltstørrelse. - Men det der Integer aner jeg ikke hvad er;-)
27. august 2004 - 09:54 #11
Sorry :o)

Ja, Integer er heltal. I access fanger du den ved at vælge tal->Heltal.

Det er kun i Access, at man først skal vælge tal og dernæst angive hvilken type tal. Alle andre databaser (som jeg kender) vælger man bare Integer, Tinyint, Date eller hvad det måtte være.
Avatar billede bol Nybegynder
27. august 2004 - 10:01 #12
Thomas nu har jeg sat mine felter til heltal - men den bruger forsat 0 og -1 - det skal den måske også?? Jeg troede den skulle bruge 0 og 1?? -
27. august 2004 - 10:04 #13
Nej, 0 og -1 er det 'korrekt' i forhold til Access.

Det var My SQL, som benyttede 0 og 1 som standard, hvilket ikke virkede.

Prøv om din applikation ikke fungere korrekt nu?
Avatar billede bol Nybegynder
27. august 2004 - 10:23 #14
Ialt kr ved timer: ([Udtryk2]*[Timesats]+[Modregning Timer])*IIf([Helligdag]=-1;1,25;1)

Der er bare et stort problem og det er denne beregning - den vil ikke virke efter jeg har konventeret det!!
Avatar billede Slettet bruger
27. august 2004 - 10:23 #15
thomasjepsen:
Dejligt, dér fik jeg også lært noget.  :-)
Mht. integer var jeg dog på rette spor. :-)
Avatar billede bol Nybegynder
27. august 2004 - 10:23 #16
Det virker ikke endnu i mine beregninger - Og det er ligesom dem der får hele systemet til at hænge sammen
Avatar billede bol Nybegynder
27. august 2004 - 10:26 #17
Jeg har nogle felter som defult skal være 0,00 - men de indeholder ingen værdi når jeg taster ind - dette giver problemer fordi de også er en del af beregingerne! Felterne er helt tomme - Jeg ved ikke om jeg gør det her rigtig - har efterhånden fumlet med det i rigtig lang tid..
Avatar billede bol Nybegynder
27. august 2004 - 10:31 #18
Jeg har fundet fejlen det er simpelhen pga de feleter jeg har som ikke får nogen værdi - MEn jeg ved ikke hvordan man i My SQl sætter en standard værdi - Jeg har prøvet med defult, men det virker ikke..
27. august 2004 - 10:31 #19
Hmm, problemet med 0 som standardværdi kan løses ved at angive standard-værdien på feltet i My SQL.

Er det Helligdag, som er ja/nej-feltet?

Kan du aflæse hvilken værdi, som står i Helligddag? Står der 1 eller -1?

Hvis du skrev alle lignende beregninger om til denne omvendte (som også bør bruges i alm. Access):
([Udtryk2]*[Timesats]+[Modregning Timer])*IIf([Helligdag]=0;1;1,25)

eller blot
([Udtryk2]*[Timesats]+[Modregning Timer])*IIf([Helligdag];1,25;1)
27. august 2004 - 10:33 #20
Default-value er det samme som standardværdi.

hvis du arbejder med sammenkædet tabeller vha ODBC, skal du slette sammenkædningen i Access og oprette den igen hver gang du har lavet ændringer på My SQL-serveren.
Avatar billede bol Nybegynder
27. august 2004 - 10:33 #21
Der står -1
27. august 2004 - 10:40 #22
Hvis dit udtryk stadig ikke virker, kan det så være fordi en af de 3 andre værdier er Null?
Avatar billede bol Nybegynder
27. august 2004 - 10:42 #23
Ialt kr ved timer: ([Udtryk2]*[Timesats]+[Modregning Timer])*IIf([Helligdag]=-1;1,25;1) virker fint når jeg blot får udfyldt de tomme felter

-

I My sql er de tomme felters defult sat til 0 og der er tilladt NUll værdi - Lenght = 10 - Det var oprindeligt et Tal/Valuta i Access (kr.)i My sql står det til et decimal tal -
27. august 2004 - 10:46 #24
valuta i Access er i virkeligheden bare et reelt tal med et bestemt format. Så det er fint nok, at My SQL gemmer den som decimaltal.
Du skal så bare fremover sikre dig, at når du bruger feltet, skal du manuelt angive Valuta i formattet.
Avatar billede bol Nybegynder
27. august 2004 - 10:50 #25
Nu kan jeg slet ikke få lov til at indtaste værdier i de "tomme felter"
27. august 2004 - 10:53 #26
Kan du slet ikke skrive i felterne???
Avatar billede bol Nybegynder
27. august 2004 - 10:56 #27
Nej der er 4 felter jeg slettet ikke kan skrive noget i
27. august 2004 - 10:58 #28
Har du ændret noget i tabellen siden du sammenkædet sidst?

Er det på formularen, du ikke kan skrive, eller er det direkte i tabellerne?
Avatar billede bol Nybegynder
27. august 2004 - 11:11 #29
Felterne er total løst i måde forespøgsler og formular - og når hef forsøger at indtaste det i tabellerne i accsshvor der er link til My SQL - Så kommer #Slettet  Der er et autonummeringsfelt på
Avatar billede bol Nybegynder
27. august 2004 - 11:12 #30
Det er i foresp. og i fomularen i tabellen kommer der blot - #Slettet
Avatar billede bol Nybegynder
27. august 2004 - 11:14 #31
Men den starter slet ikke med en defult værdi heller -
Avatar billede bol Nybegynder
27. august 2004 - 11:16 #32
Jeg har et par id i samme tabel - men kan altså ikke gennemskue problemet her!!
27. august 2004 - 11:19 #33
dit indlæg 27/08-2004 11:11:39 blev vist skrevet lidt hurtigt - det krævede lige lidt detektivarbejde og en gennemgang af hver tast på tastaturet at regne ud, hvad du mente :o)

At der ikke er nogen default-værdi, skyldes at My SQL først sætter dem ind, når posten gemmes.

Men jeg forstår ikke hvorfor felterne er låst. Det sker typisk kun hvis man ikke har fået gensammenkædet efter en ændring eller hvis der f.eks. mangler indekser på tabellen. Men oftets er alle felter, som låses.

Der kan generelt godt være mange drillerier i fbm konvertering til en anden backend :o(
Avatar billede bol Nybegynder
27. august 2004 - 11:31 #34
JEg tror jeg har fundet løsningen normalt behøver man ikke at gemme id i en forsp. i access - men når det er fra my sql skal alle ide også indgå i forespøgslen..
27. august 2004 - 11:36 #35
ja, det plejer jeg nu også i Access.

Noget andet, jeg kom til at tænke på er Timestamp.

Hvis du oplever andre problemer med at redigere i en post, kan du oprette et ekstra felt i tabellen (kald det hvad du vil) og give det datatypen "Timestamp" (jeg tror, at den hedder det samme på My SQL, men er ikke helt sikker).
Dette felt skal af og til medtages, da serveren ellers kan have problemer med at skelne postændringer fra hinanden.
Avatar billede bol Nybegynder
27. august 2004 - 11:40 #36
Ups gik lidt hurtigt har forsat problemer selvom jeg har fundet fejlen...
Avatar billede bol Nybegynder
27. august 2004 - 11:47 #37
Den kommer med en fejl hvor den siger ODBC kunne ikke sammenkæde til tabellen "modregning" - fordi timeregid ikke kan have værdien NULL - Timeregid i modregning er det samme som ID i timereg tabellen
Avatar billede bol Nybegynder
27. august 2004 - 11:51 #38
jeg forstår simpelhen ikke det her - Thomas jeg skal nok give dig nogle flere point!! Nu har vi da ihvertfald fundet fejlen
27. august 2004 - 11:52 #39
hmm, da My sql ikke er min stærke side, så tror jeg ikke, at jeg kan hjælpe dig meget mere. :o(

Måske mangler der relationer mellem tabellerne? Måske har My SQL ikke oprettet disse automatisk?
Avatar billede bol Nybegynder
27. august 2004 - 11:54 #40
Jeg har været inde og lave relationer i access - man kan da ikke lave relationer i My sql??
27. august 2004 - 12:10 #41
jo det kan du godt, men hvordan....det ved jeg ikke pt (jeg har ikke selv my sql installeret mere).
Men det er heller slet ikke sikkert, at det er det, som er problemet.

Prøvede du det med Timestamp?
Avatar billede bol Nybegynder
27. august 2004 - 12:16 #42
Jep har prøvet - med den - jeg kan godt skrive nu i de felter den giver blot fejl
27. august 2004 - 12:30 #43
hmm...jeg har desværre ikke flere bud :o(
Avatar billede bol Nybegynder
27. august 2004 - 16:57 #44
fik løst det meste ved din hjælp mange tak thomas
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