Deutsch
Forum

SQL Tabellenfelder abfragen Access

 

Christof
Neuß
Hallo,

mal wieder eine Frage zu SQL mit einer Access-Datenbank im Hintergrund.
Ich möchte einfach die Felder UND DEREN ART einer bestimmten Tabelle abfragen.

In VBA geht das wohl so:

Wie kann ich das denn übersetzen? Oder kennt jemand eine andere Möglichkeit?
 
Win10 16 GB RAM
13.11.2011  
 



Ich zumindest habe von Access-Datenbanken und VBA keine Ahnung. ^^
 
13.11.2011  
 




Uwe
''Pascal''
Niemeier
Ich bin's mal wieder
window 600,600
def %SQL_HANDLE_STMT 3
def %SQL_NTS        -3
var File$="D:\Archive\Einstellungen\Alcatel 701\Nachricht.mdb"
var Name$="Inbox"
var Init$="Driver={Microsoft Access Driver (*.mdb)};Dbq="+File$
var Command$="SELECT TOP 1 * FROM "+Name$
db("SQLInit",Init$)
declare Handle&
external("odbc32.dll","SQLAllocHandle",%SQL_HANDLE_STMT,&SQLDBC,addr(Handle&))
external("odbc32.dll","SQLExecDirect",Handle&,Command$,%SQL_NTS)
declare Count&
external("odbc32.dll","SQLNumResultCols",Handle&,addr(Count&))'--Anzahl Felder
declare Text#:dim Text#,255
declare a&,b&,c&,d&,e&

whileloop 1,Count&

    cls
    external("odbc32.dll","SQLDescribeCol",Handle&,&loop,Text#,255,addr(a&),addr(b&),addr(c&),addr(d&),addr(e&))
    external("oleaut32.dll","VarI4FromI2",b&,addr(b&))'--Umwandlung von SHORT nach LONG
    print "Index         ",&loop
    print "Name          ",string$(Text#,0)
    print "NameLength    ",a&
    print "DataType      ",b&
    print "ColumnSize    ",c&
    print "DecimalDigits ",d&
    print "Nullable      ",e&
    print
    print "<ENTER>"
    waitkey

endwhile

print "Fertig"
external("odbc32.dll","SQLFreeHandle",%SQL_HANDLE_STMT,Handle&)
db("SQLDone")
dispose Text#
waitkey
end
'
'Hinweis:
'DataType ist vom Typ SQLSMALLINT
'Bei negativen Werten wird darum beim Auslesen das Vorzeichen-Bit nicht korrekt umgesetzt!
'Umwandlung von SHORT nach LONG ist nötig!
SQL_UNKNOWN_TYPE	  =0;
SQL_CHAR            =1;
SQL_NUMERIC         =2;
SQL_DECIMAL         =3;
SQL_INTEGER         =4;
SQL_SMALLINT        =5;
SQL_FLOAT           =6;
SQL_REAL            =7;
SQL_DOUBLE          =8;
SQL_DATETIME        =9;
SQL_TIME            =10;
SQL_TIMESTAMP       =11;
SQL_VARCHAR         =12;
SQL_LONGVARCHAR    =(-1);
SQL_BINARY         =(-2);
SQL_VARBINARY      =(-3);
SQL_LONGVARBINARY  =(-4);
SQL_BIGINT         =(-5);
SQL_TINYINT        =(-6);
SQL_BIT            =(-7);

window 600,600
 $H Windows.ph
 $H ocx3a.ph
 $I ocx3a.inc
ocxInit()
var File$="D:\Archive\Einstellungen\Alcatel 701\Nachricht.mdb"
var Name$="Inbox"
var Connect$="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+File$
var Command$="Select TOP 1 * from "+Name$
var Rec&=ocxCreate("ADODB.Recordset")
ocxMethod(Rec&,"Open",Command$,Connect$)
var Fields&=ocxget(Rec&,"Fields")'---"Fields" ohne Parameter: Fields-Collection
var Count%=ocxGet(Fields&,"Count")'--Anzahl Felder in Collection
ocxRelease(Fields&)
declare Feld&

whileloop 0,Count%-1

    cls
    Feld&=ocxGet(Rec&,"Fields",&loop)'--"Fields" mit Parameter: einzelne Felder nach 0-Index
    print "Index      : ",&loop
    print "Name       : ",ocxGet(Feld&,"Name")
    print "Type       : ",ocxGet(Feld&,"Type")
    print "Value      : ",left$(ocxGet(Feld&,"Value"),40)'--Inhalt auf 40 Zeichen gekürzt
    print "DefinedSize: ",ocxGet(Feld&,"DefinedSize")'------Deklarierte Größe
    print "ActualSize : ",ocxGet(Feld&,"ActualSize")'-------Verwendete Größe
    print
    print "<ENTER>"
    ocxRelease(Feld&)
    waitkey

endwhile

ocxMethod(Rec&,"Close")
ocxRelease(Rec&)
ocxDeInit()
print "Fertig"
waitkey
end
'Werte für DataTypen bei MSDN unter
'https://msdn.microsoft.com/en-us/library/windows/desktop/ms675318(v=VS.85).aspx

Offtopic @ iF: Leerzeilen im Quelltext wären hilfreich

HTH
Pascal
 
13.11.2011  
 




Christof
Neuß
Und wieder bin ich durch Dich einen Schritt weiter.

DANKE!!!!
 
Win10 16 GB RAM
13.11.2011  
 



[OFFTOPIC]
Uwe ''Pascal'' Niemeier (13.11.11)
Offtopic @ iF: Leerzeilen im Quelltext wären hilfreich


Funktionieren doch?!
[/OFFTOPIC]
 
13.11.2011  
 




Nico
Madysa
[OFFTOPIC]
Zeilen, nicht Zeichen, iF.
declare zwischendiesenzeilen%
print "gibt es keinen Abstand!"

[/OFFTOPIC]
 
13.11.2011  
 



Oh! Ja, natürlich -

Quelltexte werden ja gezeilt ^^ -

bau ich wieder ein Flag für ein.

Es gibt (aber) auch den Quelltextmerker wenn man 1:1-Quelltexte braucht:  [...] 
 
13.11.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.416 Betrachtungen

Unbenanntvor 0 min.
H.Brill22.05.2024
Stephan Lührsen03.08.2021
Claus Müller26.11.2017
ByteAttack05.01.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie