04. januar 2003 - 23:09Der er
9 kommentarer og 1 løsning
Format felter i query
Jeg har en tabel (tabel1)med navne og adresser i (linket via ODBC fra Navision) og ud fra denne tabel skal jeg lave en ny tabel (tabel2) men hvert felt fra tabel1 skal tildeles en fast længde f.eks 30 karakterer i tabel2. Så hvis f.eks et felt fra tabel1 kun fylder 20 karakterer skal resten fyldes ud med blanke. Tabel2 skal både indeholde tekst og numeriske felter der alle skal formatteres sådan. Eftersom tabel1 er linket kan jeg ikke lave noget indtastnings filter på denne tabel.
Jeg forestiller mig at man kører en update query der opdaterer de poster der ligger i tabel1 til det rigtigeformat i tabel2...
Men jeg er ikke så stærk i formattering via querys sååå HJÆLP!
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Jeg er heller ikke skrap til formattering i Query. Så her et forslag i VBA:
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 db47 = OpenDatabase("D:\VBA funktioner\VBA\db47") Set tdfNew = db47.CreateTableDef(a) With tdfNew .Fields.Append .CreateField("tekst", dbText) .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 MsgBox "Tabellen:" & vbNewLine & vbNewLine & a & vbNewLine & vbNewLine & "er nu oprettet.", Title:="Udført." End With Errorhandler: If Err = 3010 Then MsgBox "Der findes allerede en tabel med dette navn." & vbNewLine & vbNewLine & "Procedüren forlades." End If
Der opretter en ny tabel i databasen "db47". Jeg mener også du kan sætte feltlængde på, men det må jeg lige fundere lidt over. Du kan efter oprettelse så køre en tilføjelsesforespørgsel, der smide data fra Tabel1 over i Tabel2.
Koden er hentet fra en lille testdb i Access97. Læg din e.mail, hvis du vil have den sendt
MUGS -> Jeg har allerede tabellen da der bliver puttet mere i den løbende... Derfor var jeg interesseret i hvordan man kunne formattere det der står i tabel2 hvergang man har kopieret noget ned i den.
Funktionen Fyld skal du oprette i en modul (som kan kaldes "modFyld")...
Selve SQL'en (INSERT INTO...) er "bare" en forespørgsel, som du kan køre når det er nødvendigt...
Jeg kan se i din kommentar til mugs, at du nu hellere vil opdatére hele tabel2 end kun lave ændringen hver gang du flytter data fra tabel1 til tabel2. Hvis dette er tilfældet, så skal din SQL være:
UPDATE Tabel2 SET Navn=fyld(Navn, 30), Adresse=fyld(Adresse, 30);
Proaccess >> Har desværre først fået tid til at kigge på dit eksempel nu, men det virker!
Hvis jeg nu har et tal fel der f.eks har værdien 35 og skal formattere det til 000000035 (35 -> 000000035 eller 700 -> 000000700) kan man så også gøre det ligeså smart (tal feltet skal fylde 9 felter ialt) ?
>coolcard: Hvis de 35 og 700 er TAL-værdi'er, så skal du "bare" angive 000000000 i Format for kolonnenen (eller feltet, hvis det er på en formular/rapport)
>Pro Access : Ok, det er jeg med på men hvordan grejer jeg at folk indtaster f.eks 2,00 eller bare 2 og det skal i feltet formatteres til 000000200? På selve formen skal der blot stå 2,00 men i tabellen skal der stå 000000200, og man skal være sikker på at derstår det samme om folk taster 2,0 / 2 / 2,00. Det største beløb er således 9999999,99 der kan indtastes.... Der er frit valg om det skal laves som tekst eller tal værdi. Evt. er det ok at have to felter i tabellen een med den formatterede værdi og en med "komma" i ?
PS Tak for hjælpen indtil videre!
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.