Nu er det sådan at jeg har brug for at kunne sende en sms til gatewayen med en forespørgsel på f.eks. (?BOKS ID12). Denne sms placeres jvf. ovenstående spm/541951 i en tabel efter den er indkommet til sms-gatewayen.
Nu er det sådan at jeg gerne vil have en sms tilbage med de seneste temperaturværdier for BOKS NR. 12. Disse temperaturværdier er registreret i en anden tabel.
Kan man lave noget der "kigger" på den indkomne SMS og udvælger de felter med temperaturværdier der svarer til boks nr. 12 ? Det var een ting.
Når man har udvalgt felterne vil jeg gerne have dem placeret i tabellen SMSOUT sammen med telefonnummeret på den der spørger (det står nemlig også i et felt) - de sendes så nemlig automatisk via SMS-gatewayen !
Jeg ved ikke om det er for komplekst og umuligt, men det ville være dejligt hvis det kan lade sig gøre.
Det som svarer til "de seneste temperaturlæsninger" er det dem vi lavede med funktionen "DecodeString" ???
Forespørgslen på ID12, indkommer den i tabellen ozekismsin ?, og i givet fald, har denne et kendetegn som gør at man kan aflæse at der er tale om en forespørgsel, og ikke en inddatering af nye date ???
"?BOKSID12" stammer fra tabellen ozekismsin hvor strengen står i feltet MSG når det er modtaget fra gatewayen. Strengens værdi kunne ligeså godt være "?BOKSID25" Det kommer an på hvilken boks man ønsker at se data fra. Det afgøres af hvilken sms man sender.
Faktisk det samme felt som vi arbejdede på i den foregående kommunikation.
Når nu vi ved at det f.eks. er boks 12 eller boks 25 man ønsker at se på værdier fra, skal der kigges i tabellen DATA hvor boksens ID er oplistet sammen med 4 andre felter der indeholder temperaturværdier.
Boks 12 kan f.eks have 4 værdier der hedder 300 - 432 - 355- 426
Jeg skal så have placeret en streng i tabellen ozekismsout hvor der er et felt der hedder MSG - resultatet skulle så gerne være "BOKS12 Føler1: 300, Føler2: 432, Føler3: 354, Føler 4: 426"
Samtidigt skal modtagerens telefonnummer sættes ind i receiver feltet. Informationen kommmer fra tabellen ozekismsin hvor telefonnummeret her står i Sender feltet.
Jeg har været ved at kode nogle omkringliggende tabeller og forespørgsler, og har endnu ikke haft tid til at kode den automatiske programkørsel. Når jeg finder metoden skal jeg nok kommentere det på spørgsmålet.
Ja, det er de data vi lavede med den foregående decodestring.
Kendetegnet på om meddelelsen er en ny kodning af data eller en forespørgsel kunne være det "?" jeg har sat i starten af strengen F.eks. "?BOKSID12" eller blot "?ID12"
Dvs. hvis der i MSG står BOKS efterfulgt af IDXX, er der tale om en forespørgsel, og hvis der står ID12,232,253,533,544 så er det tale om værdier som skal indlæses/decodes i tabellen Data ????
Tabellen ozekismsin bliver vel hele tiden fodret med nye data ... Bliver denne tømt, eller kan man udvælge den seneste post med BOKS IDXX som værende den som der skal returneres data for ????
Hvorledes er teksten, er det BOKSID12 eller BOKS ID12 eller en helt tredie ???
Grunden til, at det er rimeligt vigtigt med BOKSxxxx er, at jeg skal skille strengen ad for at få isoleret tallet ( 12 ), da det er den værdi som der skal forespørgse på i Data ... derfor er det nædvendigt at fortælle hvor i teksten denne værdi er at finde ....
Men jeg vender tilbage ... måske først i morgen ... OK ???
Med den fremgangsmåde jeg tidligere har skitseret, er det nu lykkedes at få isoleret de nødvendige data til placering i ozekismsout ... men ... her kan vel nødvendigvis ikke ligge mere end een post ( spørger af uvidenhed ) for, hvordan ved programmet ellers hvilken post der skal returneres via sms ???
Det er min skyld, for jeg har ikke beskrevet hvordan ozekismsout virker.
Der skal placeres en streng der hedder "Send" i feltet status i den post der skal afsendes. (Dette kan gøres samtidigt med at man opretter posten). Når SMS-gatewayen har sendt SMS-beskeden ændres denne streng automatisk fra gatewayen til "transmitted". Derved ved man hvad der er sendt og hvad der endnu ikke er behandlet.
Til at starte med, skal du oprette en ny forespørgsel med følgende :
SELECT Last(ozekismsin.id) AS id, Last(ozekismsin.receiver) AS receiver, Last(Mid([msg],7)) AS BOKSID, Last(ozekismsin.receivedtime) AS receivedtime, Last(ozekismsin.operator) AS operator FROM ozekismsin WHERE (((ozekismsin.msg) Like "BOKS*"));
Jeg vil mene at for at få telefonnummeret med over skal forespørgslen ændres til:
SELECT Last(ozekismsin.id) AS id, Last(ozekismsin.sender) AS receiver, Last(Mid([msg],7)) AS BOKSID, Last(ozekismsin.receivedtime) AS receivedtime, Last(ozekismsin.operator) AS operator FROM ozekismsin WHERE (((ozekismsin.msg) Like "BOKS*"));
"ozekismsin.receiver" ændres til "ozekismsin.sender" fordi det jo er den der har sendt beskeden der skal have en tilbage igen
Hvis det er der det korrekte telefonnummer er, er det korrekt c",)
Men nu begynder det at blive sjovt for alvor ... den rutine som flytter data til ozekismsout, den skal være køre hele tiden ... ik´ ...
Dvs. den skal afvikles i samme rutine som DecodeString ... dette giver jo lige det problem, at den vil indsætte den samme post hele tiden, med mindre vi vælger at slette posten i ozekismsin ... er dette en gangbar løsning ???
Det er korrekt at alle de rutiner vi laver skal køre kontinuerligt.
men eftersom der er et ID felt i ozekismsin der er fortløbende kan man vel bruge princippet fra decodestring eksemplet med at gøre alle felter til nøglefelter. Så vil beskeden vel kun blive indsat én gang.
(Det kan godt være jeg har misforstået princippet, men så må du lige belære mig om det).
Der kan iøvrigt sagtens være et ekstra felt i ozekismsin (ja/nej). Det har ingen betydning for resten.
Problemet i ozekismsin er, at du ikke umiddelbart kan se ud af id, om der allerede er forespurgt på dette, da status er uændret ... dette kan vi ændre ved at indføje et ja/nej felt som opdateres efter hver forespørgsel.
Først indsætter du et ja/nej felt i ozekismsin ( navn = SendRequest )
Dernæst ændrer du lige din forespørgsel ( qryRequest ) til :
SELECT ozekismsin.id, ozekismsin.sender, (Mid([msg],7)) AS BOKSID, ozekismsin.receivedtime, ozekismsin.operator FROM ozekismsin WHERE (((ozekismsin.msg) Like "BOKS*") AND ((ozekismsin.SendRequest)=False));
Til sidst ser din nye modulkode således ud :
Function DecodeString()
Dim strSQL As String Dim db As DAO.Database
Set db = CurrentDb()
strSQL = "INSERT INTO Data ( ID, FELT1, FELT2, FELT3, FELT4 )" strSQL = strSQL & "SELECT Mid([MSG],3,2) AS ID, " strSQL = strSQL & "Mid([MSG],6,3) AS FELT1, " strSQL = strSQL & "Mid([MSG],10,3) AS FELT2, " strSQL = strSQL & "Mid([MSG],14,3) AS FELT3, " strSQL = strSQL & "Mid([MSG],18,3) AS FELT4 " strSQL = strSQL & "FROM ozekismsin;"
Det er jo helt fantastisk som du ryster det ud af ærmet. OG DET VIRKER !
Jeg har utroligt svært ved at lære dette kodesprog, så det er godt der er nogen der kan. Nu vil jeg sætte mig ned og tage ved lære af denne kode.
At få rutinerne til at køre automatisk og kontinuerligt finder jeg stadigvæk nok en løsning på, men du er velkommen til at smide en kommentar, hvis der skulle komme noget forbi.
Vær venlig at smide et svar - så point-tildelingen kan ske. Tusind tak for hjælpen
Har set rutinen, men var vist lidt i tvivl om hvor den skulle køres fra. Der står noget med at den skal køre i hovedformularen, men da jeg ikke havde nogle formularer åbnet vidste jeg det ikke rigtigt. Måske er det mig der igen er dum, og den skal placeres i et modul i VBA eller et eller andet.
Jeg har tildelt point i dette spørgsmål. Det foregående havde jeg allerede tildelt point i kan jeg se.
Den automatiske kørsel forudsætter, at der er en formular som kan aktiveres, idet timerfunktionen kun kan oprettes her. Så det er simpelthen bare at aktivere denne formular når du åbner databasen ( dette kan gøres via makroen Autoexec ).
Herefter aktiverer du rapportens modulkode og indsætter dette
Hvis du åbner databasen men en formular ( eksempelvis Hovedformular ), han du benytte denne kode ( i formularen ) :
Kan ikke errindre, at jeg har blandet rapport ind i teksten, men never mind ...
Jeg ved faktisk ikke, om den kan afvikles på andre måder, men jeg kender dem desværre ikke c",)
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.