21. september 2004 - 08:13Der er
24 kommentarer og 1 løsning
Søg efter tekststreng
Jeg er ved at lave en SMS-gateway med integration til en Access database. Da jeg er forholdsvis nystartet er det muligvis en stor mundfuld. Imidlertid har jeg et irritationsmoment, jeg ikke rigtigt ved hvad jeg skal gøre ved.
SMS-gatewayen opretter en post i databasen med SMS beskeden, samt afsenders telefonnummer med mere. Selve beskeden sættes i ét felt og kan f.eks. være "ID34,300,340,355,322"
Beskeden kommer fra en PLC-controller som afgiver måleresultater fra 4 temperaturfølere samt den eget ID nummer.
Disse værdier vil jeg gerne have indsat i en anden tabel i samme database. Denne tabel indeholder et felt med ID nummer samt 4 felter der hver skal indeholde værdierne fra ovenstående temperaturfølere.
Jeg skal altså have skrevet noget kode der går ind og kigger på sms-beskeden og indsætter tingene i en anden tabel hvor der så er 5 felter: 1.felt er boksens ID (34), 2.felt er værdien fra føler 1 (300), 3.felt er værdien fra føler 2 (340), 4. felt er værdien fra føler 3(355), og 5.felt er værdien fra føler 4 (322).
Jeg ved ikke om jeg har beskrevet det grundigt nok, men ellers vil jeg gerne uddybe spørgsmålet.
Hvis der er nogen der umiddelbart ved hvad man skal gøre vil det være en stor hjælp.
Tak for svaret. Jeg havde godt nok håbet på lidt mere uddybende omkring selve kodningen. F.eks. hvor skal koden oprettes, hvor tit skal koden køre (f.eks. hver gang en ny sms-besked indløber) og hvordan får jeg det til at ske automatisk.
Output skulle jo gerne være en tabel der indeholder alle data der modtages via sms-beskeder.
Opdateringen af tabellen for indgående sms-beskeder sker jo så snart en sms-besked modtages fra gatewayen. Jeg benytter en sms gateway fra http://www.ozeki.hu
Denne er forbundet til en access database med en tabel for indkommende sms-beskeder og en tabel for udgående sms-beskeder. De udgående springer vi lige hen over i første omgang, men for at de indgående skal kunne bruges til noget fornuftigt skal jeg altså have opdateret den omtalte nye tabel med temperaturdata hver gang tabellen for indgående sms-beskeder tilføjes en ny post.
Man kan iøvrigt se hvordan den tilhørende access database ser ud - og downloade den via nedenstående link. Det er det jeg har gjort, og vil så bygge videre på denne database, men har ikke før prøvet at programmere VBA i access. http://www.ozeki.hu/index.phtml?ow_page_number=174
Det som koden pt. gør er at lave et opslag i tblSMS hvor tekststrengen findes, splitter denne ad, og tilføjer resultatet i tblDecodedSMS. Er det nogenlunde det du som udgangspunkt vil gøre ???
jeg er ikke sikker på jeg forstår. Jeg har nu sat X i DAO i reference, men det hjælper ikke.
Når jeg prøver at køre koden skriver den: Microsoft Jet-databasemotoren kan ikke finde inputtabllen eller forespørgslen "tblsms". Kontroller at den findes og at navnet er stavet korrekt.
Jeg har ændret navnet SMS på koden så den svarer til den rigtige tabel. Samtidigt har jeg ændret navnet på alle linierne så de svarer til det rigtige felt i inputtabellen.
Jeg fik i mellemtiden løst problemet med fejlmeddelelsen. Det vil sige at det faktisk virker nu. Så er det bare lige at få fundet ud af hvordan man trigger koden, så den ikke kører mere end én gang når det er nødvendigt. Desuden skal man vel have den til at undgå at tilføje poster der allerede er tilføjet én gang.
Hvis du fjerner dit autonummereringsfelt fra Data-tabellen, og gør de øvrige felter til nøglefelter, udgør de tilsammen en unik nøgle, som ikke kan forekomme mere end een gang. Dette til virker som begrænsning for programkoden, som så ikke opdatere posten igen.
Ja, spørgsmålet kræver nok at jeg sætter mig noget mere ind i access, for jeg aner faktisk ikke hvordan man gør. Man kan vel checke for nye poster på en eller anden måde ?
Den metode du foreslog med at gøre de øvrige felter til nøglefelter virker også efter hensigten, så der sker vel ikke noget ved at køre den hver gang man åbner databasen.
Nu regner jeg godt nok med at dette skal køre på en PC der konstant står tændt og modtager SMS-beskeder via dens gateway og konstant skal indsætte disse i databasen. Samtidigt skal den kunne vise en graf over udviklingen i de modtagne værdier, og måske udskrive dem automatisk en gang i døgnet.
Findes der funktioner i databasen til at køre en kode på bestemte tidspunkter ? F.eks. en gang i minuttet ?
Jeg accepterer svaret, for det har faktisk været en stor hjælp. Spørgsmålet om start af kode med faste intervaller har muligvis været belyst før under andre spørgsmål, så jeg kigger lige der.
If Time >= StartTime And Time < StopTime Then \' Run macro. Debug.Print \"Run Macro...\" \'DoCmd.RunMacro (\"Yourmacro\") Else \' Don\'t run macro. Debug.Print \"Don\'t run Macro...\" End If
Hvis du åbner databasen men en formular ( eksempelvis Hovedformular ), han du benytte denne kode ( i formularen ) :
Option Compare Database
Sub Form_Load() Me.TimerInterval = 6000 End Sub
Sub Form_Timer() DecodeString End Sub
Den afvikler funktionen een gang i minuttet, sålænge formularen er åben
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.