Avatar billede petertorp Nybegynder
26. februar 2003 - 14:45 Der er 2 kommentarer og
2 løsninger

Dataformat ved i tabeloprettelsesforespørgsler

Hej,

Jeg skal oprette en tabel, men enkelte felter bliver mod min hensigt oprettet som tekstfelter.
Fx " Felt1:(CDbl([Felt2])+CDbl([Felt3]))/2) "

Kan jeg skrive noget, der tvinger den til at blive et talformat?

mvh

Peter
26. februar 2003 - 15:08 #1
Det tit lidt svært at styre, men du kan prøve med:
Felt1:Val((CDbl([Felt2])+CDbl([Felt3]))/2))

Hvis dette ikke virker, vil jeg anbefale dig at benytte en alternativ metode:
Opret tabellen, som du ønsker den.
Benyt istedet en tilføjelsesforespørgsel til at indsætte data. Forinden skal du selvfølgelig lige køre en sletteforespørgsel (Delete From [Din tabel])

Dette er den mest hensigtsmæssige måde, da du derved kan indeksere relevante felter, ligesom du kan begrænse feltstørrelser til det minimale.

/Thomas
Avatar billede mugs Novice
26. februar 2003 - 17:24 #2
'Procedüren opretter en ny tabel med et valgfrit navn gemt i variablen a.
'Argumenterne er:("tekst", dbText, 30). "tekst" er feltets navn, dbText er felttypen, 30 er feltlængden.
'Feltlængden kan kun bestemmes ved tekstfelter, idet den ved numeriske felter og memo sættes af Access.
Dim db47 As Database
Dim tdfNew As TableDef
Det kan gøres med en VBa-procedüre:

Dim a As String
On Error GoTo Errorhandler
a = InputBox(Prompt:="Indtast navnet på den nye tabel:", Title:="Opret ny tabel.", Default:="")
Set db1 = OpenDatabase("C:\db1")
Set tdfNew = db1.CreateTableDef(a)
With tdfNew
.Fields.Append .CreateField("tekst", dbText, 30)
.Fields.Append .CreateField("memo", dbMemo)
.Fields.Append .CreateField("dato", dbDate)
.Fields.Append .CreateField("tal", dbInteger)
.Fields.Append .CreateField("tal1", dbLong)
.Fields.Append .CreateField("tal2", dbDouble)
db47.TableDefs.Append tdfNew
End With
Errorhandler:
If Err = 3010 Then
MsgBox "Der findes allerede en tabel med dette navn." & vbNewLine & vbNewLine & "Procedüren forlades."
End If
Avatar billede mugs Novice
26. februar 2003 - 17:25 #3
Det var vist kopieret forkert:

Dim db47 As Database
Dim tdfNew As TableDef
Dim a As String
On Error GoTo Errorhandler
a = InputBox(Prompt:="Indtast navnet på den nye tabel:", Title:="Opret ny tabel.", Default:="")
Set db1 = OpenDatabase("C:\db1")
Set tdfNew = db1.CreateTableDef(a)
With tdfNew
.Fields.Append .CreateField("tekst", dbText, 30)
.Fields.Append .CreateField("memo", dbMemo)
.Fields.Append .CreateField("dato", dbDate)
.Fields.Append .CreateField("tal", dbInteger)
.Fields.Append .CreateField("tal1", dbLong)
.Fields.Append .CreateField("tal2", dbDouble)
db47.TableDefs.Append tdfNew
End With
Errorhandler:
If Err = 3010 Then
MsgBox "Der findes allerede en tabel med dette navn." & vbNewLine & vbNewLine & "Procedüren forlades."
End If
Avatar billede petertorp Nybegynder
26. februar 2003 - 17:46 #4
ok - det ser ud til at jeg kan bruge begge løsninger...

tak for det!
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