Avatar billede phi-del Nybegynder
05. januar 2006 - 14:53 Der er 38 kommentarer og
1 løsning

problem ved sql syntaks

Er der nogen der kan se fejl ved denne sætning

strSQL = "UPDATE Data SET Data.Y = (" & m & ")" & " * [X] + (" & b & ") " & _
" WHERE (((Data.Y) Is Null) AND ((Data.X) Is Not Null));"
CurrentDb.Execute strSQL
Avatar billede phi-del Nybegynder
05. januar 2006 - 14:57 #1
jeg bruge det til at interpolere tal i access database.
min database ser sådleds ud :

Y      X
        0
0      0,026
        0,037
0,003  0,038
0,005  0,064
        0,067
        0,074
0,008  0,077
0,01    0,09
        0,093
Avatar billede phi-del Nybegynder
05. januar 2006 - 14:58 #2
og det er så meningen at jeg vil finde de tomme felter og udfylde dem igenne interpolation.

derfor ser min kode sådan ud .


Sub sInterpolation()
Dim strSQL As String
Dim dbs As Database
Set db = CurrentDb
    Call sRegressionLine
    strSQL = " UPDATE Data SET Data.Y = (" & m & ")" & " * [X] + (" & b & ") WHERE (((Data.Y) Is Null) AND ((Data.X) Is Not Null));"
    CurrentDb.Execute strSQL
End Sub
Sub sRegressionLine()
    Dim dbs As Database, rcs As Recordset
    Set dbs = CurrentDb()
    Set rcs = dbs.OpenRecordset("SELECT Sum(Data.X) AS SumX, Sum([X]*[X]) AS SumXX, Sum(Data.Y) AS SumY, Sum([X]*[Y]) AS SumXY, " & _
    "Count(Data.X) AS N FROM Data " & _
    " WHERE (((Data.X) Is Not Null) AND ((Data.Y) Is Not Null));")
   
    m = (rcs!N * rcs!SumXY - rcs!SumX * rcs!SumY) / (rcs!N * rcs!SumXX - rcs!SumX ^ 2)
    b = (rcs!SumY * rcs!SumXX - rcs!SumX * rcs!SumXY) / (rcs!N * rcs!SumXX - rcs!SumX ^ 2)
End Sub
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 15:01 #3
får du en fejlmeddelelse fra SQL'en?
du kan indsætte "debug.print strSQL" lige før "currentdb...." for at få strSQL udskrevet til Immediate vinduet.
Det kan være fejlen er nemmere at se når variablerne er udfyldt.
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:04 #4
UPDATE Data SET Data.Y = (" & m & ")" & " * [X] + (" & b & ") WHERE .....
der melder at der mangler en komma.

jeg laver ikke nogen før CurrentDb
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:07 #5
sorry.

den melder
Run-time error '3075'

Der er en syntaksfejl, fordi der mangler en operator i
Forspørgelsesudtrykket "(0,1014)'[X]+(0,0267) Where(((data.y)is
Null)AND((data.X)is Not Null));".
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 15:18 #6
Jeg er ikke helt sikker, men den der opostrof før [X] ser mærkelig ud skal den være der?
Har jeg ret i at du ganger m og [X] og lægger b til?

Er ikke sikker, men kunne det være så simpelt som dette:

UPDATE Data SET Data.Y = (m * [X] + b ) WHERE (((Data.Y) Is Null) AND ((Data.X) Is Not Null
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:22 #7
har ligeprøvet det der så begynder den med at melde at der er får få parameter
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:23 #8
vil du se databasen
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 15:24 #9
ja det vil jeg gerne - min mail er:
jesperfjoelner AT hotmail.com
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 15:25 #10
husk at zippe den :-)
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:27 #11
står AT for snabbbelllA
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 15:28 #12
ja :-)

faktisk hedder snabela "at" på engelsk.
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:39 #13
:) jeg har sendt det til dig.

når talne er interpolleret korrekt ville det kunne afspejle sig på de lille graf jeg har lavet :)
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 15:41 #14
Ok den er modtaget.
Variablerne m og b i din SQL - hvad skal de være eller hvor skal de komme fra?
De er ikke at finde i proceduren, så de mangler i SQL'en.
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:44 #15
m og b er resultatet af
proceduren sRegressionLine
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:46 #16
du kan også flette begge procedure sammen
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 15:47 #17
Jeg prøver lige at lave det.
Sub'en sRegressionLine skal være en Function.
Øjeblik...
Avatar billede phi-del Nybegynder
05. januar 2006 - 15:52 #18
ok... jeg venter spændt håber du kan hjælpe :)
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 15:54 #19
Jo det kan jeg tror jeg, jeg er tilbage om et øjeblik :-)
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:01 #20
Jeg har den stort set.

Et spørgsmål - når du kører funktionen opdaterer du jo feltet Y. Var det noget at bruge en forespørgsel i stedet for - så slipper du for (definitivt) at opdatere Y.

Det skulle være i det tilfælde at du har brug for den "rå" tabel, som den er eller hvis der sker en fejl i opdateringen. Dette er nok ikke nødvendigt, hvis du har dine data et andet sted også, hvilket jeg tænker du har.
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:04 #21
jeg vil bare gerne kunne interpolere alle de tomme felter i y, dvs alle de steder i y hvor der ikke står noget skal den opdatere dem så de får alle en værdi.
dette vil nemlige gøre at diagrammet bliver pænt og ikke prikket.
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:05 #22
ok, du får den straks.
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:06 #23
i virkligeheden har jeg 8 Y felter. dvs.
Y1 , Y2, Y3, Y4, Y5 osv.
og jeg skal kunne interpollere alle de tom rum som findes i alle de Y ´er.
men jeg tænkte at hvis jeg kunne få den første til at virke skulle resten bare være en løkke ?

for i =1 to 8
osv.....
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:21 #24
Nu tror jeg det virker. Det drillede lige lidt.

Vær opmærksom på at når du trykker på din knap, opdaterer den jo hele tabellen.

Så du skal have backup af rådata et andet sted inden du kører det.
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:22 #25
Hedder dine felter Y1,Y2...Y8 ?

Så kan jeg lige bygge det ind.
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:29 #26
faktisk hedder de MPA2 til MPA8., jeg har kaldt dem for Y for at simplificere og min
X felt hedder procent. og min tabel hedder TMPgraf.
sorry :(
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:35 #27
Fino, ingen problem. Jeg laver det med MPA2-8 og TMPgraf, og så kan du måske rette det til hvis noget mangler.

Spørgsmål - jeg går ud fra at data i MPA2-8 er forskellige fra kolonne til kolonne.
Skal den så ikke køre hele baduljen en kolonne ad gangen og udfylde MPA2 og så MPA3 osv?
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:40 #28
ja gerne hvis du kan :)
datane fra felterne er forskellige.
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:41 #29
ok, jeg er tæt på at have den.
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:45 #30
fedt :)
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:47 #31
Ok, jeg har sendt en, jeg tror virker.
Hvis der er uoverensstemmelser med kolonnenavnene kan det være der skal rettes en ting eller to.
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:50 #32
jeg tjekker lige tusssindddd tak for hjælppeeen :)
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:52 #33
Det var så lidt! Glad to help :-)
Sig til hvis der er detaljer, der driller.
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:58 #34
men kan du ikke indlægge et svar
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:59 #35
ja så vil jeg skrive, men skal smutte hjem nu.
tussind tak for hjælpen
Avatar billede phi-del Nybegynder
05. januar 2006 - 16:59 #36
:) det bare så fedt
Avatar billede jesperfjoelner Nybegynder
05. januar 2006 - 16:59 #37
Det var så lidt. Held og lykke med det :-)
Avatar billede phi-del Nybegynder
06. januar 2006 - 09:59 #38
er du her ?
Avatar billede phi-del Nybegynder
06. januar 2006 - 10:35 #39
Jeg kan oprette den som et nyt spørgesmål
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