| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Abfragen-Problem MS-Access (1048 mal gelesen)
|
pistolpete1 Mitglied Student
 
 Beiträge: 102 Registriert: 06.01.2007
|
erstellt am: 30. Apr. 2008 19:37 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forum! Ich habe eine Verbindung zu MS-Access hergestellt und möchte kann auch ein "einfaches" SELECT absetzen. Wenn ich folgendes Select absetzen will: SELECT Count(s.Pos) AS anz FROM zeichnungsliste AS z INNER JOIN schachtliste AS s ON z.Dateinummer=s.Dateinummer WHERE (((z.Dateiname) Like '*TV_Skizze_Test St. Irgendwo.dwg') AND ((s.Pos)='1')) GROUP BY s.Pos; bekomme ich ständig EOF! Wenn ich allerdings die Abfrage direkt im ACCESS absetze bekomme ich das gewünschte ergebnis! Es handelt sich seltsamerweise um ein und die selbe Abfrage! Ich habe zuerst eine Initialisierungsroutine, die die Connection herstellt und ein Test-SElect absetzt. Anschließend wird das RecordSet geschlossen und die Connection gehalten (hoffe, dass kein implizites Close erfolgt, aber schätze, dann gäbe es einen anderen Fehler....). Aus einer anderen Routine setze ich dann das besagte Select ab. Zum Schluss erfolgt das Schließen der Connection!
Öffnen: Code:
cCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";Persist Security Info=False" Set adoCon = New ADODB.Connection ret = False adoCon.Open cCon Set adoRS = New ADODB.Recordset sql = INIT_TEST_SELECT adoRS.Open sql, adoCon If Not adoRS.EOF Then ret = True End If adoRS.Close Set adoRS = Nothing initializeAccessConnection = ret
Select:
Code:
Set adoRS = New ADODB.Recordset sql = "SELECT Count(s.Pos) AS anz " & _ "FROM zeichnungsliste AS z INNER JOIN schachtliste AS s ON z.Dateinummer=s.Dateinummer " & _ "WHERE (((z.Dateiname) Like '*TV_Skizze_Test St. Irgendwo.dwg') AND ((s.Pos)='1')) " & _ "GROUP BY s.Pos;" adoRS.Open sql, adoCon If Not adoRS.EOF Then If adoRS("anz").Value > 0 Then .... do something.... End If End If adoRs.Close
SCHLIESSEN:
Code:
Public Sub destroyAccessConnection() Debug.Print "Destroying connection..." If Not adoCon Is Nothing Then adoCon.Close Set adoCon = Nothing End If End Sub
Liebe Grüße, Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 30. Apr. 2008 20:23 <-- editieren / zitieren --> Unities abgeben:          Nur für pistolpete1
Hallo Peter, das in Access ist ja auch kein "richtiges" SQL. Ohne es getestet zu haben mal mein Ansatz. Zu beachten ist, dass das Jokerzeichen in SQL nicht der * sondern % ist. Code: SELECT Count(s.Pos) AS anz FROM zeichnungsliste z, schachtliste S where z.Dateinummer = s.Dateinummer and z.Dateiname Like '%TV_Skizze_Test St. Irgendwo.dwg' and s.Pos)='1' GROUP BY s.Pos;
Dem Recordset fehlen wohl noch einige Parameter die man normalerweise mitgibt. Sieh auch malhier.Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
pistolpete1 Mitglied Student
 
 Beiträge: 102 Registriert: 06.01.2007
|
erstellt am: 30. Apr. 2008 21:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wilfried! Vielen Dank . Ich weiß zwar, dass '%' SQL-konform ist, aber ich dachte ich probier es mit dem was ACCESS annimmt. Dein Rat war wieder einmal für unschätzbaren Wert für mich, denn ich wäre nicht darauf gekommen! Schönen Abend, Lg Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |