Koden opretter en ny tabel med navnet "tabel1", tilføjer 6 felter og angiver forskellige felttyper. Desuden skriver VBA tabellens egenskaber til fejlfindingsvinduet. Hvis der er tale om en midlertidig tabel, der skal slettes igen efter brug, skal du blot slette apostrofferne ved de sidste 2 linier. Koden er afprøvet i en Access97 og fungerer. Læg din e-mail hvis du vil have den tilsendt:
Dim datoformat As Database Dim tdfNew As TableDef Dim prpLoop As Property Set datoformat = OpenDatabase("datoformat.mdb") Set tdfNew = datoformat.CreateTableDef("tabel1") With tdfNew .Fields.Append .CreateField("tekst", dbText) .Fields.Append .CreateField("meno", dbMemo) .Fields.Append .CreateField("dato", dbDate) .Fields.Append .CreateField("tal", dbInteger) .Fields.Append .CreateField("tal1", dbLong) .Fields.Append .CreateField("tal2", dbDouble) Debug.Print "Egenskaber til det nye TableDef-objekt " & "inden det føjes til samlingen:" For Each prpLoop In .Properties On Error Resume Next If prpLoop <> "" Then Debug.Print " " & prpLoop.Name & " = " & prpLoop On Error GoTo 0 Next prpLoop datoformat.TableDefs.Append tdfNew Debug.Print "Egenskaber ved det nye TableDef-objekt " & "efter at være føjet til samlingen:" For Each prpLoop In .Properties On Error Resume Next If prpLoop <> "" Then Debug.Print " " & _ prpLoop.Name & " = " & prpLoop On Error GoTo 0 Next prpLoop End With ' datoformat.TableDefs.Delete "tabel1" ' datoformat.Close
Hvis du ikke vil skrive til fejlfindingsvinduet, skal de blot se sådan ud:
Dim datoformat As Database Dim tdfNew As TableDef Dim prpLoop As Property Set datoformat = OpenDatabase("datoformat.mdb") Set tdfNew = datoformat.CreateTableDef("tabel1") With tdfNew .Fields.Append .CreateField("tekst", dbText) .Fields.Append .CreateField("meno", dbMemo) .Fields.Append .CreateField("dato", dbDate) .Fields.Append .CreateField("tal", dbInteger) .Fields.Append .CreateField("tal1", dbLong) .Fields.Append .CreateField("tal2", dbDouble) datoformat.TableDefs.Append tdfNew End With ' datoformat.TableDefs.Delete "tabel1" ' datoformat.Close
Hvis du med dato-format mener måden Access viser din dato i tabelvisning, så er det IKKE noget du kan ændre via SQL!
Den interne værdi er uændret, så hvis du vil "nøjes med" at bruge SQL til din Access-database må du formatere værdien ved udtræk fra databasen... (i dit klient-program) Alternativt kan du jo gå i design-visning (I selve Access) af din nyoprettede tabel og ændre formatet dér)
proaccess > godmorgen, det kan godt være, at jeg skyder gråspurve med kanoner, så vidt jeg kan se, opretter min procedüre et datofelt, hvor formatet som standard sættes til kort datoformat. Det kan godt være du har ret, at brugeren kun vil have SQL i db.
proacces > Tak skal du have. Men se dig i spejlet, så vil du vide af hvem jeg bl.a. har lært. Jeg prøver blot at give lidt af dette videre. Og blinde høns finder jo også korn!
as proaccess says, the way the database stores the date is ALWAYS the same it is only the visual representation which you can alter for either entry (input mask) or displaying (format) and the regional settings also has a lot to play here. The regional settings define how your date formats actually display the date. So in fact you can alter the regional settings to display the date differently.
Jeg er ked af at sige det, men det er udelukkende SQL jeg er ude efter. Der for brugte jeg Access forummet istedet for ASP. Skulle nogen ligge inde med en løsning så giver det 200 point.
Sådan er livet - Jeg vil dog tilføje, at mit svar også er korrekt. Men du har formuleret dit spørgsmål forkert, idet du ikke understreger, at du udelukkende er interesseret i løsninger, der bygger på SQL.
Så proaccess og undertegnede skal dele dine point uanset om du kan bruge vore løsninger eller ej.
Dette indlæg er kun ment som en understregning af, hvor vigtigt det er at formulere et spørgsmål korrekt, og dette skal ikke være en pointjagt, så jeg vil se bort fra mine :o)
Hvis jeg ville have haft ASP, så havde jeg stillet spg. i en ASP gruppe. Derfor blev spg. stillet i Access da jeg ikke kunne finde en SQL gruppe. Der er grupper nok for andre former for SQL, men da MS ikke holder sig til standard SQL valgte jeg Access gruppen.
ralley > Nu skal vi ikke "pin-hugge" ordene. Men hvis du havde formuleret dit spørgsmål på en måde, som understregede at der var tale om ASP / SQL, havde jeg ikke brugt 15 - 20 min. imorges på at grave en korrekt løsning frem. :o)
ralley, the same applies to SQL Server, the DATE is saved in the database in the same format. WHEN you select from the database the you should use the US date format.
MM-DD-YYYY or YYYY-MM-DD.
So IF you use SQL to select a date from Access then your SELECT should look like this. SELECT SomeField from MyTable WHERE SomeField = #2002-10-28#
NOW, if we go BACK to your ORIGINAL QUESTION. "Definering af datoformat ved oprettelse"
Even IF you had created the question in ASP the answer would be the same IF we are using Access. AND 200 points doesnt help the answer is the same!
ralley>This question has been open long enough and you have received a correct answer, even though youmay not be happy with it. So please respond to this question, or admin is getting informed!
ralley : At svaret ikke er hvad du havde håbet, berettiger dig ikke til at undlade at kommentere/acceptere korrekte svar. Du har 5 dage, derefter deaktiveres din bruger uden varsel. - n0rmality, coadmin
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.