Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Att göra en databas fristående från Access

Postades av 2006-10-26 10:27:42 - Jonas Persson, i forum access, Tråden har 14 Kommentarer och lästs av 1845 personer

Jag undrar hur jag enklast gör för att kunna köra min databas som är skriven i access utan att ha access installerat. Jo, jag vet att det ska gå bra att bara ha runtime installerat men dels så krockar det med en annan databas som är installerad som även den kör access och dels så undrar jag hur jag får bort frågan "Du håller på att lägga till en post. Vill du verkligen göra detta?" så fort någon lägger in något i databasen. Det är ju något som man gör i Access under "Alternativ", "Redigera, sök" och "Bekräfta poständringar" men det följer ej med när man kör databasen fristående.

Finns det någon lathund för hur jag kör en databas fristående via Access runtime?


Svara

Sv: Att göra en databas fristående från Access

Postades av 2006-10-26 12:03:03 - Andreas Hillqvist

<b>Jag undrar hur jag enklast gör för att kunna köra min databas som är skriven i access utan att ha access installerat.
Jo, jag vet att det ska gå bra att bara ha runtime installerat men dels så krockar det med en annan databas som är installerad som även den kör access.</b>
På vilket sätt krockar det? Är det olika versioner av Access runtime?

<b>Så undrar jag hur jag får bort frågan "Du håller på att lägga till en post. Vill du verkligen göra detta?" så fort någon lägger in något i databasen. Det är ju något som man gör i Access under "Alternativ", "Redigera, sök" och "Bekräfta poständringar" men det följer ej med när man kör databasen fristående.
</b>

Hur lägger du till data i databasen? Med en insertfråga eller liknande? För detta är inget som jag känner igen när man fyller i data i formulär i access.

<b>Finns det någon lathund för hur jag kör en databas fristående via Access runtime?</b>
Jag känner tyvärr inte till någon.


Svara

Sv:Att göra en databas fristående från Access

Postades av 2006-10-26 13:08:07 - Jonas Persson

Ahhh.. vilken sabla jobbig bugg det finns här på pellesoft.. Det går inte att skriva en massa i meddelandefältet och sedan kika på något annat ( i det här fallet "utforskaren") för att sedan fortsätta skriva... Då försvinner allt man skrivit.... bugg!!!

<b>På vilket sätt krockar det? Är det olika versioner av Access runtime?</b>

på vissa datorer så vill inte min databas starta om jag inte stänger den andra först. Sedan kan jag starta den andra.

På vissa datorer så startar installationen av office även fast jag installerat runtime.

På vissa datorer så startar min databas inom samma fönster som den tidigare databasen.

<b>Hur lägger du till data i databasen? Med en insertfråga eller liknande? För detta är inget som jag känner igen när man fyller i data i formulär i access.</b>

Jo, jag använder insert för att lägga in poster. jag är inte ensam om att ha detta "problem" Hittade info om detta på nätet men som sagt så funkar det bara om man har access installerat och inte bara runtime.

Går det inte (på ett enkelt sätt) att starta min databas på något annat sätt än att starta själva mdb-filen?


Svara

Sv: Att göra en databas fristående från Access

Postades av 2006-10-26 13:15:04 - Andreas Hillqvist

För insert frågor:

Dyu använder Makro kod det är inte "rätt" sätt. Du bör istället använda ADO eller DAO för att utföra dina frågor. Det finns exemple på detta i forumet.
Jag avråder dig från att använda macro utan det är bettre att istället skriva VB kod.
Det är en betydligt högre inkörströskel men då får en bättre möjlighet att skriva applikationer.


Svara

Sv:Att göra en databas fristående från Access

Postades av 2006-10-26 13:22:29 - Jonas Persson

NEJ, jag använder inte macro. Jag använder VB som är inbyggt i access. Här är ett exempel:

<code>
Private Sub sparaPost_Click()
Dim sqlString As String
sqlString = "INSERT INTO ledare (ledare) VALUES (nyLedare)"
DoCmd.RunSQL (sqlString)
</code>


Svara

Sv: Att göra en databas fristående från Access

Postades av 2006-10-26 13:38:48 - Fredrik Molnar

Prova om...
<code>
Private Sub sparaPost_Click()
Dim sqlString As String
dim db as database
set db = currentdb
sqlString = "INSERT INTO ledare (ledare) VALUES (nyLedare)"
db.execute(sqlString)
</code>
...gör någon skillnad.

/F


Edit:
<code>
docmd.setwarnings=false
docmd.runsql sqlString
docmd.setwarnings=true
</code>
Borde ta bort frågorna vid varje ändring..

Edit2:
Och om jag minns rätt så är DoCmd i princip samma sak som att köra ett Access-makro..

Edit3:
Men Hillqvist har rätt, använd DAO (mitt översta exempel) eller ADO istället..


Svara

Sv:Att göra en databas fristående från Access

Postades av 2006-10-26 14:15:56 - Jonas Persson

Koden:

<code>
Private Sub sparaPost_Click()
Dim sqlString As String
dim db as database
set db = currentdb
sqlString = "INSERT INTO ledare (ledare) VALUES (nyLedare)"
db.execute(sqlString)
</code>

visar följande felmeddelande:

Kompileringsfel:
Egendefinierad typ har inte definierats.


Och det är "db As database" som kompilatorn hakar upp sig på.



<code>docmd.setwarnings=false
docmd.runsql sqlString
docmd.setwarnings=true</code>

ger följande fel:

"Kompileringsfel:

"Argumentet är inte valfritt

och det är på ".SetWarnings" den hakar sig.


Svara

Sv: Att göra en databas fristående från Access

Postades av 2006-10-26 14:57:24 - Fredrik Molnar

Första felet, lägg till referens till Microsoft DAO 3.6
Andra felet, ska vara utan =-tecken

:)


Svara

Sv:Att göra en databas fristående från Access

Postades av 2006-10-26 15:24:16 - Jonas Persson

Alltså, jag är ju riktigt grön när det gäller access så jag måste ju dessvärre fråga var jag hittar DAO 3.6 så att jag kan lägga till referens..

Utan =-tecken så gick det alldeles utmärkt! ;)

Varför ska jag använda mig av DAO? Jag är som sagt grön....


Svara

Sv: Att göra en databas fristående från Access

Postades av 2006-10-26 15:42:41 - Fredrik Molnar

>var jag hittar DAO 3.6 så att jag kan lägga till referens..

Öppna en modul. I menyn Verktyg->Referenser, leta upp "Microsoft DAO 3.6..." Och kryssa i den. =)


Svara

Sv: Att göra en databas fristående från Access

Postades av 2006-10-26 16:43:18 - Andreas Hillqvist

DoCmd.RunSQL är en funktion som används när du konvertera Makro till kod. Det är alltså som om du körde makro instruktionen fast i VB kod. Jag tror den till och med anropas när ett makro exekveras.

Vad du vill åstakomma är alltså att infoga en Ledare i tabellen Ledare från textrutan nyLedare?

nyLedare är en annonym parameter. Man kan tydlig typspecificera parametrar:

PARAMETERS nyLedare Text ( 50 );
INSERT INTO ledare ( ledare )
VALUES (nyLedare);


DoCmd.RunSQL() funktionen innehåller intiligens vad det gäller parametrar. Metoden läser ut om det finns några parametrar försöker sedan matcha detta mot "miljön", om det finns några kontroller som heter lika dant som namnet.
Jag antar att det är detta du gör och att du därmed har en Textbox som heter nyLedare.
Om detta saknas kommer RunSQL att visa en egen dialog där den frågar användaren om värdet.

Jag rekommenderar då att du använder en typspcificerar dina parametrar. Då det tydlig framgår vad som är fält och vad som är parametrar.
För att köra frågor rekommenderar jag att du använder ADO framför DAO. Detta då du underlättar för dig om du senare väljer att migrera till projekt till SQL server.

Din kod skriver du i så fall så här:
Dim cmd As ADODB.Command
        Set cmd = New ADODB.Command
        Set cmd.ActiveConnection = CurrentProject.Connection
        cmd.CommandText = "INSERT INTO ledare (ledare)" + vbCrLf + _
                          "VALUES (?)"
        cmd.Parameters.Append cmd.CreateParameter("nyLedare", adVarChar, adParamInput, LedareMaxLängd, nyLedare.Value)
        cmd.Execute


Men något som är viktigt när du kodar är felhantering. Om ett fel skulle uppstå, tänkbara fel kan vara:
* Glömt ange ett värde/lämnat textrutan tom
* Värdet finns redan/index hindrar dubletter t.ex. det är en primärnyckel
* Du har angivit ett för långt värde, verstiger fältets längd. I detta fallet 50 tecken.

Kommer din applikation krascha om du hör i Runtime läge.

Detta kan du förhindra genom att kontrollera värdet och fånga felmedelande. Du bör dessutom Hantera varje fel på ett användarvänlig tillväga gångssätt. T.ex. Visa en dialog som talar om orsak, kosekvens och hur användare skall korigera det. Samt t.ex. flytta markör/fokus till källan:
Private Sub sparaPost_Click()
Dim cmd As ADODB.Command
On Error GoTo sparaPost_Click_Err
    If IsNull(nyLedare.Value) Then
        MsgBox "Du har har inte angivit något namn på ledaren." + vbCrLf + _
               "Ange ett namn och försök igen ", vbInformation
        nyLedare.SetFocus
    ElseIf Len(nyLedare.Value) >= LedareMaxLängd Then
        MsgBox "Längden på ledarens namn får inte överstiga " & LedareMaxLängd & "." + vbCrLf + _
               "Försök igen med ett kortare namn på din ledare.", vbExclamation
        nyLedare.SetFocus
    Else
        Set cmd = New ADODB.Command
        Set cmd.ActiveConnection = CurrentProject.Connection
        cmd.CommandText = "INSERT INTO ledare (ledare)" + vbCrLf + _
                          "VALUES (?)"
        cmd.Parameters.Append cmd.CreateParameter("nyLedare", adVarChar, adParamInput, LedareMaxLängd, nyLedare.Value)
        cmd.Execute
    
        MsgBox "Du har nu sparat """ & nyLedare & """ till databasen", vbInformation
    End If
    
sparaPost_Click_Exit:
    Exit Sub
    
sparaPost_Click_Err:
    Select Case Err.Number
    Case -2147467259 'would create duplicate values in the index, primary key, or relationship.
        MsgBox """" & nyLedare & """ finns redan en ledare sparad." + vbCrLf + _
               "Försök igen med ett annat värde.", vbExclamation
        nyLedare.SetFocus
        Resume sparaPost_Click_Exit
    Case Else
        MsgBox Err.Description, vbCritical, Err.Source
        Resume sparaPost_Click_Exit
    End Select
End Sub

Detta är betydligt mer kod än vad du använde för början. Så varför skall du göra på detta sättet?

Svaret är enkelt.

Du höjer kvaliteten i form av användarvänlighet, felmedelandenan från RunSQL är kryptiska för en användare.

Det är viktigt hur användare förstår och upplever din applikation. Om de inte förstår din applikation kommer de ge fler suportärende och användare kommer att bli frustrerade. Upplever de din applikation som jobbig att använda så kommer det int anlita dig igen eller tala illa om din applikation.

Du tjänar på att tillhandahålla en användarvänlig applikation.


Svara

Sv: Att göra en databas fristående från Access

Postades av 2006-10-26 19:43:52 - Jan Bulér

Med "DoCmd.SetWarnings False/True" kan avaktivera resp aktivera varningarna.

Om du vill göra det med din kod men slippa varningen kan du skriva så här


<code>
Dim sqlString As String

DoCmd.SetWarnings False 'Avaktiverar eventuella varningar

sqlString = "INSERT INTO Tabell1 (Namn) VALUES ('Namn1')"
DoCmd.RunSQL (sqlString)

DoCmd.SetWarnings True 'Aktiverar eventuella varningar (om du vill)
</code>


Svara

Sv:Att göra en databas fristående från Access

Postades av 2006-10-27 10:09:30 - Jonas Persson

Ett stort tack till er alla för all hjälp! Speciellt tack till Andreas till det långa och utförliga svaret!


Svara

Sv: Att göra en databas fristående från Access

Postades av 2006-10-27 11:50:10 - Andreas Hillqvist

Hur valde du då att göra?


Svara

Sv:Att göra en databas fristående från Access

Postades av 2006-10-28 09:58:22 - Jonas Persson

Än så länge så har jag bara slagit av och på felmeddelanden och jag tog några av dina exempel. La t.ex. in meddelanden på alla ställen som bekräftar inmatningar. Mycket bra.. Jag kommer helt klart att göra om mer saker så att det blir mer användarvänligt.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 766
27 960
271 761
506
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies