WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 31.07.2003, 11:01   #1
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard Access DB - Ja/Nein-Feld - Format

Ich hab in einer Table in Access ein Ja/Nein Feld.

Wenn ich die Tabelle händisch erstelle und ein Ja/Nein Feld auswähle, wird automatisch als Format Ja/Nein eingetragen.
Wenn ich nun die Tabelle an ein Listfeld binde, erscheint bei dem Wert False ein "Nein" und bei True ein "Ja"

Jetzt erstelle ich solche Tabellen aber auch zur Laufzeit via SQL Abfrage (Create Table tablename ([Attrib1] YesNo, ....)
Nur da wird dann kein Ausgabeformat bestimmt und ich seh im Listfeld nur einen 0er für False und einen -1er für True.

Und das is net wirklich repräsentativ.
Weiß von euch vielleicht jemand, wie ich das ganze via VB zur Laufzeit einstellen kann?

Ich dank euch schon mal.
renew ist offline   Mit Zitat antworten
Alt 31.07.2003, 14:22   #2
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Vergleich mal in den beiden Tabellen die Properties für das bewusste Feld. Dort sollte eigentlich sowas machbar sein.

---------------------------------------
Public Sub Test()
Dim wrk As DAO.Workspace
Dim db As DAO.Database
Dim Properties As DAO.Properties
Set wrk = CreateWorkspace("", "Admin", "")
Set db = wrk.OpenDatabase(CurrentProject.FullName)
Set Properties = db.TableDefs("YourTable").Fields("YourField").Prop erties
End Sub
Seidl ist offline   Mit Zitat antworten
Alt 31.07.2003, 15:53   #3
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Seidl
Vergleich mal in den beiden Tabellen die Properties für das bewusste Feld. Dort sollte eigentlich sowas machbar sein.

---------------------------------------
Public Sub Test()
Dim wrk As DAO.Workspace
Dim db As DAO.Database
Dim Properties As DAO.Properties
Set wrk = CreateWorkspace("", "Admin", "")
Set db = wrk.OpenDatabase(CurrentProject.FullName)
Set Properties = db.TableDefs("YourTable").Fields("YourField").Prop erties
End Sub
danke...

DAO hab ich bis jetzt nicht wirklich geschaut - ich bin eigentlich voll auf ADO(X).

Mit ADOX war ich schon auf der Table, aber da hab ich net wirklich was gefunden, außer den Standardeinstellungen.
Aber vielleicht gibt ja das "alte" DAO mehr her, in der Beziehung.

Danke auf alle Fälle.
renew ist offline   Mit Zitat antworten
Alt 31.07.2003, 20:33   #4
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

So schön ADO und ADOX auch sind (bzw. sein sollten) bin ich nicht wirklich ganz glücklich damit. Ich weiss, ich habe schon andere Statements hören lassen aber man lernt eben nie aus

Natürlich sind ADO und ADOX an sich eine schöne Sache aber es gibt da auch so einige Hacken. Dadurch, das ADOX für möglichst viele Systeme funktionieren soll, ist es natürlich sehr allgemein gehalten. Eigenschaften die einem einzelnen System zu eigen sind können da selbstverständlich nicht immer mit Einzug halten.

Wenn man unter Access wirklich in die Tiefe will, muss man sich oft genug mit DAO abplagen. Da führt leider kein Weg dran vorbei. Einzig für den Zugriff auf andere Datenbanksysteme ist ADO natürlich klar im Vorteil (wenn auch oft langsamer) da es als aktuelle Lösung auch noch in Zukunft weiter unterstützt werden wird.
Seidl ist offline   Mit Zitat antworten
Alt 31.07.2003, 20:36   #5
frazzz
Inventar
 
Registriert seit: 11.01.2003
Beiträge: 5.292


Standard

wie wäre ein updatetrigger auf diese spalten?

ifthenelse


so als workaround
____________________________________
pssst

tanj


frazzz ist offline   Mit Zitat antworten
Alt 01.08.2003, 10:26   #6
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von frazzz
wie wäre ein updatetrigger auf diese spalten?

ifthenelse


so als workaround
hab ich nix davon.

Weil ich die Tabelle direkt mit einer Abfrage an ein Listfeld binde. Es werden also direkt die Werte die in der Tabelle stehen in das Listfeld eingetragen.
Und wenn ich das nicht auf "Tabellenebene" einstellen kann (das mit dem Ja/Nein), dann steht halt leider 0 und -1 im Listfeld.

Inzwischen hat sich das ganze eh schon 3mal geändert und ist schon ganz anders, aber mich interessierts trotzdem noch.
Also werd ich mir das mit DAO anschaun.

Ich hab eh schon a bissl mit DAO gemacht (meine ersten Schritte in VB und DBs), aber mich in den letzten 1 1/2 Jahren eigentlich immer nur mit ADO beschäftigt.

BTW: DAO is schneller als ADO - das is ja komisch....
renew ist offline   Mit Zitat antworten
Alt 01.08.2003, 11:12   #7
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Nicht unbedingt.

Mit einem Offroad-Wagen kannst du so ziemlich jede Strasse befahren aber auf dem ihm eigenen Terrain ist ein Rennflitzer bestimmt um einiges schneller.

ADO ist eben nicht auf Access spezialisiert und das muss sich natürlich irgendwo niederschlagen.
Seidl ist offline   Mit Zitat antworten
Alt 01.08.2003, 11:21   #8
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Seidl
Nicht unbedingt.

Mit einem Offroad-Wagen kannst du so ziemlich jede Strasse befahren aber auf dem ihm eigenen Terrain ist ein Rennflitzer bestimmt um einiges schneller.

ADO ist eben nicht auf Access spezialisiert und das muss sich natürlich irgendwo niederschlagen.
is logisch....

müsste man halt man ein paar Vergleiche machen und schaun was schneller is.
renew ist offline   Mit Zitat antworten
Alt 05.08.2003, 11:58   #9
Seidl
Veteran
 
Registriert seit: 10.01.2001
Beiträge: 478


Standard

Hier ein paar Daten aus: "Microsoft Access Programmierung - Version 2002 (ISBN 3-86063-654-5)"

Im speziellen gehts um:

"Abbildung 9.30: Zeitmessung für Lokale Datenbank"
-------------------------------------------
ODBCDirect (Dynaset) - 65ms
ADO (ClientCursor, Static) - 48ms
ADO (ServerCursor, KeySet) - 20ms
ADO (ServerCursor, Static) - 28ms
DAO (Snapshot) - 19ms
DAO (Table) - 3ms
DAO (Dynaset) - 8ms
-------------------------------------------

und um:

"Abbildung 9.31: Zeitmessung für SQL-Server-Datenbank"
-------------------------------------------
ODBCDirect (Snapshot) - 1250ms
ODBCDirect (Dynamic) - 700ms
ODBCDirect (Dynaset) - 3500ms
ADO (ClientCursor, Static) - 250ms
ADO (ClientCursor, Keyset) - 250ms
ADO (ServerCursor, KeySet) - 20200ms
ADO (ServerCursor, Static) - 20000ms
-------------------------------------------

Die Werte stimmen vielleicht nicht ganz da ich sie auf die Schnelle aus den recht kleinen Diagrammen abgelesen habe. Man sieht aber auf jeden Fall, dass DAO unter Umständen durchaus Vorteile besitzt.

An dieser Stelle noch ein kleiner Textauszug der den Vergleich der Technologien abschliesst.

--------------------------------------------
Wie gesagt: Welche Technologie Sie schlussendlich nutzen, hängt auch davon ab, welches Problem Sie lösen möchten. Bei der Arbeit mit Access-Datenbanken sind die ADOs zwar teilweise langsamer, spätere Umstellungen auf einen SQL Server sind jedoch wesentlich einfacher realisierbar (denken Sie daran, den Cursortyp zu ändern, siehe obige Diagramme!).
--------------------------------------------


PS: Die zweiten Zeitmessungen habe ich nur der Vollständigkeit halber hinzugefügt, auch wenn DAO darin nicht vorkommt.
Seidl ist offline   Mit Zitat antworten
Alt 05.08.2003, 13:39   #10
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Seidl
Hier ein paar Daten aus: "Microsoft Access Programmierung - Version 2002 (ISBN 3-86063-654-5)"

Im speziellen gehts um:

"Abbildung 9.30: Zeitmessung für Lokale Datenbank"
-------------------------------------------
ODBCDirect (Dynaset) - 65ms
ADO (ClientCursor, Static) - 48ms
ADO (ServerCursor, KeySet) - 20ms
ADO (ServerCursor, Static) - 28ms
DAO (Snapshot) - 19ms
DAO (Table) - 3ms
DAO (Dynaset) - 8ms
-------------------------------------------

und um:

"Abbildung 9.31: Zeitmessung für SQL-Server-Datenbank"
-------------------------------------------
ODBCDirect (Snapshot) - 1250ms
ODBCDirect (Dynamic) - 700ms
ODBCDirect (Dynaset) - 3500ms
ADO (ClientCursor, Static) - 250ms
ADO (ClientCursor, Keyset) - 250ms
ADO (ServerCursor, KeySet) - 20200ms
ADO (ServerCursor, Static) - 20000ms
-------------------------------------------

Die Werte stimmen vielleicht nicht ganz da ich sie auf die Schnelle aus den recht kleinen Diagrammen abgelesen habe. Man sieht aber auf jeden Fall, dass DAO unter Umständen durchaus Vorteile besitzt.

An dieser Stelle noch ein kleiner Textauszug der den Vergleich der Technologien abschliesst.

--------------------------------------------
Wie gesagt: Welche Technologie Sie schlussendlich nutzen, hängt auch davon ab, welches Problem Sie lösen möchten. Bei der Arbeit mit Access-Datenbanken sind die ADOs zwar teilweise langsamer, spätere Umstellungen auf einen SQL Server sind jedoch wesentlich einfacher realisierbar (denken Sie daran, den Cursortyp zu ändern, siehe obige Diagramme!).
--------------------------------------------


PS: Die zweiten Zeitmessungen habe ich nur der Vollständigkeit halber hinzugefügt, auch wenn DAO darin nicht vorkommt.
danke....

Passt jetzt zwar net 100%ig in das Thema, aber kennst du eine ausführlichere Erklärung über ADO Locktypes und Cursortypes? Weil das was ich dazu in der MSDN gefunden habe, ist net so wirklich viel. (es steht nur ganz kurz was drin)
renew ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:15 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag