Italia
Foro

SQL Tabellenfelder abfragen Access

 

Christof
Neuß
Ciao,

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 Dimensione
    print "ActualSize : ",ocxGet(Feld&,"ActualSize")'-------Verwendete Dimensione
    print
    print "<ENTER>"
    ocxRelease(Feld&)
    waitkey

endwhile

ocxMethod(Rec&,"Close")
ocxRelease(Rec&)
ocxDeInit()
print "Fertig"
waitkey
end
'Werte per 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, naturalmente -

Fonte werden ja gezeilt ^^ -

bau ich wieder ein Flag per ein.

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



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

7.467 Views

Untitledvor 0 min.
H.Brill22.05.2024
Stephan Lührsen03.08.2021
Claus Müller26.11.2017
ByteAttack05.01.2016
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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