PDA

Vollständige Version anzeigen : Datensatzgröße ermitteln


dancer1970
18.02.2003, 14:44
Hallo, ich arbeite mit einer Oracle DB und Frontend Access 97 über ODBC.

Meiner Meinung nach gibt es einen Grenze an maximaler Datensatzgröße (2 kb).
Wie kann ich nun ermitteln wie groß ein Datensatz ist. Ich bin momentan noch mit dem Tabellenentwurf beschäftigt und kann noch einges steuern.

Ich habe z.B. eine Tabelle mit mehreren VARCHAR2 (Memo) Feldern. Wie groß darf ich die höchstens machen? Wieviele darf ich davon haben?

Danke für die Antworten.

Stefan

strausto
18.02.2003, 15:26
Abgesehen davon, dass Du die FeldGrössen auch manuell ermitteln kannst:


Public Function FieldSize()


Dim db As DAO.Database
Dim td As DAO.TableDef
Dim fd As DAO.Field

Set db = CurrentDb

For Each td In db.TableDefs
For Each fd In td.Fields
Debug.Print td.Name & " " & fd.Name & " " & fd.Size
Next fd
Next td
End Function

dancer1970
18.02.2003, 15:52
Danke Thorsten,
da ich mich mal wieder nicht auskenne...

Wie baue ich diese Funktion ein
unter Ereignis =fieldsize() ist nicht erlaubt
und in einer Abfrage feldname:fieldsize() liefert keinen wert.

Wie meinst du das mit manuell ermitteln?

Stefan

strausto
18.02.2003, 16:42
Die Funktion liest aller Felder aller Tabellen hinsichtlich der Feldgrösse aus.

Die DS Grösse ist abhägig von der Summe der Feldgrössen in der Tabelle.

Auf diese Weise kannst Du entweder über die Funktion oder manuell den Speicherbedarf ermitteln:

M.E. wird die DS Grösse direkt von den Einstellungen in dem Tabellenentwurf beinflusst.

Vielleicht kann ja mal ein anderer aus dem Forum die Frage beantworten, ob die DS Grösse auch von der tatsächlichen Eingabe abhängig ist. Macht es einen Unterschied ob ich in einem Textfeld der Grösse 50 nur 1 Zeichen eingebe oder alle 50 Zeichen schreibe?

Aquarii
18.02.2003, 23:46
@ Torsten

die Frage beantworten, ob die DS Grösse auch von der tatsächlichen Eingabe abhängig ist. Macht es einen Unterschied ob ich in einem Textfeld der Grösse 50 nur 1 Zeichen eingebe oder alle 50 Zeichen schreibe?

Der Speicherplatzbedarf für den Datentyp String beträgt laut OH (A00):

String (variable Länge) :
10 Bytes plus Zeichenfolgenlänge (0 bis ca. 2 Milliarden)

String (feste Länge) :
Zeichenfolgenlänge (1 bis ca. 65.400 )

d.h. der Speicherplatzbedarf ist abhängig von der Anzahl der tatsächlich verwandten Zeichen und nicht von der deklarierten Größe.

dancer1970
19.02.2003, 13:29
Hallo Aquarii,
dann ist es also von der Anzahl der eingetragenen Zeichen abhängig.

Sind Probleme über ODBC zu erwarten, wenn ich z.B. 15 Memo Felder habe, in denen jeweils ca. 1000 Zeichen stehen?

Wie kann ich die Grenze ermitteln? Die Anzahl Zeichen lassen sich ja einschränken.
Muß ich das ausprobieren oder kann man das irgendwie errechnen?

Gruß stefan

Sascha Trowitzsch
19.02.2003, 15:16
Die Frage, welche Datenmengen oder Satzgrößen fehlerfrei funktionieren, ist eine des ODBC-Treibers, weniger eine von Access.
Je nachdem, wie die ODBC-API-Implementation im Treiber aussieht.


Für Oracle kann ich dir nichts sagen.

Aber die von dir genannten Größen sollten eigentlich wirklich kein Problem machen.

Ciao, Sascha

dancer1970
20.02.2003, 07:45
Danke an alle Beteiligten.

Ich werde meinen Tabellenentwurf so belassen.

Stefan