Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
516to520
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

SQL Abfrage Typen unverträglich

SQL Abfrage Typen unverträglich
14.11.2004 18:26:39
Peter
Hallo,
Ich versuche aus einer Foxpro-Datei Daten in Excel zu laden.
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Visual FoxPro Database;UID=;SourceDB=c:\Tmp;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;" _
, Destination:=Range("A1"))
.Sql = Array( _
"SELECT v2ad1001.Nummer, v2ad1001.titel, v2ad1001.Vorname, v2ad1001.Name, v2ad1001.Strasse, v2ad1001.PLZ, v2ad1001.ort " & Chr(13) & "" & Chr(10) & _
"FROM c:\Tmp\v2ad1001 v2ad1001" & Chr(13) & "" & Chr(10) & _
"WHERE v2ad1001.name like" & Chr(39) & "%" & Name & "%" & Chr(39) & _
"AND v2ad1001.vorname like" & Chr(39) & "%" & Vorname & "%" & Chr(39) & _
"AND v2ad1001.Nummer like" & Chr(39) & "%" & Nummer & "%" & Chr(39) & _
"AND v2ad1001.ort like" & Chr(39) & "%" & ort & "%" & Chr(39))
.Refresh BackgroundQuery:=False
End With
Ich bekomme aber immer die Meldung Laufzeitfehler 13 Typen unverträglich. Kann mir einer helfen? Was mache ich falsch?
Peter

32
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SQL Abfrage Typen unverträglich
14.11.2004 18:32:52
andre
Hallo Peter,
hast Du's mal ohne chr(10) und (13) probiert?
AW: SQL Abfrage Typen unverträglich
14.11.2004 18:47:02
Ramses
Hallo
In Ergänzung zu Andre,... auch CHR$(39) ist nicht nötig
Aus der Hüfte heraus, würde ich ungetestet den String so aufbauen
WHERE v2ad1001.name like " & Name & " AND v2ad1001.vorname like " & Vorname & _
" AND v2ad1001.Nummer like " & Nummer & " AND v2ad1001.ort like " & ort & "")
Wozu brauchst du die "%" Zeichen eigentlich ?
Achte auf die richtige Platzierung der Leerzeichen im String ??
Das wird häufig übersehen ;-)
Gruss rainer
AW: SQL Abfrage Typen unverträglich
14.11.2004 19:09:19
Peter
Hallo Rainer,
das %Zeichen bauche ich, damit ich aus meiner Datei nicht nur alle mit Vornamen Heinz, sondern auch die mit Karl-Heinz heraussuchen kann. Manchmal ist auf Briefen der Absendern z.B. der Ort nicht gut zu lesen, aber ein Teil z. B. ...heim. Mit dem %Zeichen kann ich dann alle Müllers in x-heim heraussuchen. Der wirklich Gesuchte lässt sich so eingrenzen.
Ich probiere es jetzt aber erst einmal ohne %. Wenn es dann funktioniert, wird sich der Rest auch einrichten lassen
Grüße Peter
Anzeige
AW: SQL Abfrage Typen unverträglich
14.11.2004 19:11:14
Ramses
Hallo
Ich kenne FoxPro nicht, aber nachdem dies auch eine relationale SQL-Datenbank ist, sollte der SQL-String gleich sein, und dort müsstest du eigentlich das "*" verwenden.
Zumindest ist dies bei Access so.
Gruss Rainer
Zusatz...
14.11.2004 19:13:43
Ramses
Hallo
Ich weiss nicht ob es bei FoxPro auch so ist, aber im Entwurfsmodus der Abfrge habe ich die Möglichkeit den SQL-String der Abfrage direkt anzusehen.
Dann könntest du eigentlich den SQL-String direkt von dort kopieren.
Gruss Rainer
AW: Zusatz...
14.11.2004 19:20:43
Peter
Hallo Rainer,
das ist eine alte Fox-Pro 2.? Datei (*.dbf), entspricht in etwa dBaseIII. Das alte FoxPro habe ich natürlich nicht. Ich habe den String mir in MSQuery angesehen. Dort werden zwar die AND-Einschränkungen in Klammern gesetzt, sonst sieht der String aber ziemlich gleich aus. Merkwürdigerweise funktioniert die Abfrage ja auch, wenn ich nur drei AND-Einschränkungen benutze.
Grüße Peter
Anzeige
AW: SQL Abfrage Typen unverträglich
14.11.2004 19:25:20
Peter
Hallo Rainer,
Zusatz zum *
Bei Access ist das richtig. Bei Datenverbindungen, die auf ADO basieren, funktioniert als Platzhalter nur das %-Zeichen anstelle des *, und anstelle des ? muss der Unterstrich verwendet werden. Sonst bekomme ich gar keine Antwort bei der Abfrage.
Grüße Peter
Das war mir neu ;-) Danke für die Info. o.T.
14.11.2004 19:35:10
Ramses
...
AW: SQL Abfrage Typen unverträglich
14.11.2004 18:49:17
Peter
Hallo Andre,
auch ohne Chr(13) und Chr(10) kommt die Fehlermeldung. Aber wenn ich nur drei Variablen lade (z. B. Vorname, Name, Nummer), dann funktioniert die Abfrage. Sie muss aber doch auch mit mehr als drei Variablen zum Laufen zu bringen sein.
Grüße nach Gera
Peter
AW: SQL Abfrage Typen unverträglich
14.11.2004 19:30:15
andre
Hallo,
das % ist bei einigen Datenbanken gleichwertig oder statt dem * einzusetzen und bei einer like - Abfrage entsprechend notwendig. Ich arbeite mit Oracle, da geht %. Die 39 ist das Häkchen und in der Regel auch nötig - kannst Du aber direkt eingeben. Nur bei numerischen Feldern nicht, vielleicht ist da eins dabei? Deine Nummer scheint in der Datenbank alphanumerisch zu sein. Bei Deinem String ist mir noch aufgefallen, dass Du dann auch Leerzeichen bei den Zeilenenden setzen müsstest, im Archivthread erkenne ich das nicht so richtig. Geht es mit 3 beliebigen Variablen? Nicht das der ort die Ursache ist? Die 13 Deutet ja darauf hin, dass eine nicht stimmt ...
Anzeige
AW: SQL Abfrage Typen unverträglich
14.11.2004 19:38:47
Peter
Hallo Andre,
an den Zeilenenden habe ich immer die Leerzeichen (& leer _). Die Abfrage funktioniert mit drei beliebigen Variablen. Ich habe irgendwie das Gefühl, als würde ich eine maximale String-Länge oder ähnliche überschreiten.
Grüße Peter
AW: SQL Abfrage Typen unverträglich
14.11.2004 20:21:19
andre
Hallo Peter,
welche Variable meinst du eiegentlich - unten die Bedingung oder oben beim Select ? Wenn es die Stringlänge wäre probiere mal das Select ohne die Tabellenangabe. Du hast in der Abfrage ja nur eine, da dürfte es auch ohne gehen.
Grüße, andre
AW: SQL Abfrage Typen unverträglich
14.11.2004 20:41:23
Peter
Hallo Andre,
Deine Antwort habe ich nicht ganz verstanden. Also die select-Abrage funktioniert, wenn ich abfrage select .... where xy.name like .. xy.vorname like .. xy.nummer like oder
z.B. where xy.name like ... xy.nummer like .. xy.ort like..
aber nicht where xy.name like ..xy.vorname like ... xy.nummer like .. xy.ort like..
ohne die Tabellenangabe xy funktioniert die Abfrage nicht, dann bekomme ich gar kein Ergebnis.
Grüße Peter
Anzeige
AW: SQL Abfrage Typen unverträglich
14.11.2004 20:59:21
andre
Hallo Peter,
wenn Du nur eine Tabelle hast könnte auch
"select name, vorname, ... from c:\tmp\v... where name like '%...%'" usw. gehen.
grüße, andre
AW: SQL Abfrage Typen unverträglich
14.11.2004 21:31:47
Peter
Hallo Andre,
das könnte funktionieren, aber dann kann ich Name Vorname usw nicht über eine Userform erfassen und an die Abfrage weitergeben.
Grüße Peter
AW: SQL Abfrage Typen unverträglich
14.11.2004 21:45:57
Peter
Hallo Andre,
ich habe das ausprobiert
.Sql = Array("SELECT v2ad1001.Nummer, v2ad1001.titel, v2ad1001.Vorname, v2ad1001.Name, v2ad1001.Strasse, v2ad1001.PLZ, v2ad1001.ort FROM c:\Tmp\v2ad1001 v2ad1001 WHERE v2ad1001.name like '%M_l%' AND v2ad1001.vorname like '%K%' AND v2ad1001.ort like '%Wi%' And V2ad1001.nummer like '%0500%' ")
hier bekomme ich wieder Typen unverträglich
aber mit
.Sql = Array("SELECT v2ad1001.Nummer, v2ad1001.titel, v2ad1001.Vorname, v2ad1001.Name, v2ad1001.Strasse, v2ad1001.PLZ, v2ad1001.ort FROM c:\Tmp\v2ad1001 v2ad1001 WHERE v2ad1001.name like '%M_l%' AND v2ad1001.vorname like '%K%' AND v2ad1001.ort like '%Wi%'")
.Refresh BackgroundQuery:=False
also ohne Nummer, d h. mit nur drei Abfragen läuft das ganze.
Grüße Peter
Anzeige
AW: SQL Abfrage Typen unverträglich
14.11.2004 22:42:38
Ramses
Hallo
Ich weiss nicht wie deine Nummer gespeichert werden, aber normalerweise können Datenbanken keine führenden Nullen bei Nummern speichern. Das wäre bei Darstellung lediglich eine Formatierung.
Probiers mal mit "%500%'"
Eventuell interpretiert die SQL Abfrage deine Angabe als Text, dann wäre die Typ-Unverträglichkeit gegeben.
Gruss Rainer
AW: SQL Abfrage Typen unverträglich
15.11.2004 08:24:02
Peter
Hallo Rainer,
nummer ist in meiner Fox-Pro Datenbank eine String-Variable (Feldtyp: c,10,0)
und in Excel auch als String definiert. Daran kann es nicht liegen.
Grüße Peter
AW: SQL Abfrage Typen unverträglich
15.11.2004 09:19:44
andre
Hallo Peter,
ich hatte zwischendurch schon mal gefragt, ob es beliebige 3 sein können, dann kann es ja nicht an der Nummer liegen oder? Ansonsten prüfe den Inhalt und Typ der Variablen (Überwachung). Hast Du die Variablen Dimensioniert?
Grüße, Andre
Anzeige
AW: SQL Abfrage Typen unverträglich
15.11.2004 11:27:36
Peter
Hallo Andre,
die Lösung des Problems ist einfach, ohne die Angabe Array(....), sondern .sql= "select usw. funktioniert das ganze. Warum weiß ich auch nicht. Der Hinweis kam von Hansueli.
Aber Danke für Deine Bereitschaft, mir zu helfen, und Deinen Einsatz.
Grüße Peter
AW: SQL Abfrage Typen unverträglich
14.11.2004 19:27:54
Jens_Pu
Hallo Peter,
so viel ich weiß sind die Datenbankdateien von Foxpro kompatibel zu Dbase Dateien.
Die kannst Du doch problemlos in Excel öffnen. Einziger Hinderungsgrund den ich sehen würde, wäre wenn die Datenbank zu groß ist oder der einzelne Datensatz mehr als 255 Felder hat.
Gruß Jens
AW: SQL Abfrage Typen unverträglich
14.11.2004 19:35:29
Peter
Hallo Jens,
die datenbank enthält über 100.000, sie lässt sich daher in Excel ohne eine Selektion nicht öffnen.
Grüße Peter
Anzeige
AW: SQL Abfrage Typen unverträglich
14.11.2004 20:18:51
Jens_Pu
Hallo Peter,
das habe ich befürchtet.
Gruß Jens
AW: SQL Abfrage Typen unverträglich
14.11.2004 20:50:31
Jens_Pu
Hallo Peter,
sehe ich das richtig, dass es Dir nur darum geht einmalig die Daten aus der Datenbank nach bestimmten Kriterien rauszuholen, oder willst Du das öfter tun? Also mit dem Ding arbeiten.
Gruß Jens
AW: SQL Abfrage Typen unverträglich
14.11.2004 21:23:12
Peter
Hallo Jens,
nein, die Abfrage will ich häufiger starten. Wenn es nur für einmal wäre, so könnte ich die Daten ja über Externe Daten und MSQuery abrufen. Mit einer UnserForm übergebe ich die verschiedenen Variablen (Name, Ort usw).
Grüße Peter
AW: SQL Abfrage Typen unverträglich
14.11.2004 21:33:04
Peter
Hallo Jens,
trotzdem vielen Dank für Dein Bemühen.
Grüße Peter
AW: SQL Abfrage Typen unverträglich
15.11.2004 07:36:59
ypsilon
hi Peter,
da like nur mit strings arbeiten will musst du sowohl deinen tabellenwert umwandeln
to_char(v2ad1001.Nummer)
als auch deine variable
CStr(Nummer)
dann müsste eigentlich alles funktionieren
cu Micha
AW: SQL Abfrage Typen unverträglich
15.11.2004 08:27:53
Peter
Hallo Micha,
name ort nummer usw sind in meiner Datenbank string-Variablen (z. B. Nummer =Feldtyp: C,10,0). Es funktioniert ja auch, wenn ich z.B. V2ad1001.ort weg lasse.
Grüße Peter
AW: SQL Abfrage Typen unverträglich
15.11.2004 09:55:45
EtoPHG
Hallo Peter
Ich wäre sehr vorsichtig mit einer Variablen "Name". Name ist ein Schlüsselwort in VBA und kann vermutlich wilde Sachen anrichten. Versuch mal die Variablen besser zu deklarieren
Also etwa:
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Visual FoxPro Database;UID=;SourceDB=c:\Tmp;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;" _
, Destination:=Range("A1"))
.Sql = Array( _
"SELECT v2ad1001.Nummer, v2ad1001.titel, v2ad1001.Vorname, v2ad1001.Name, v2ad1001.Strasse, v2ad1001.PLZ, v2ad1001.ort " & _
"FROM c:\Tmp\v2ad1001 v2ad1001 " & _
"WHERE v2ad1001.name like’%" & strName & "%’ " & _
"AND v2ad1001.vorname like’%" & strVorname & "%’ " & _
"AND v2ad1001.Nummer like’%" & strNummer & "%’ " & _
"AND v2ad1001.ort like’%" & ort & "%’"
.Refresh BackgroundQuery:=False
End With

Gruss Hansueli
Anzeige
Nachtrag SQL (String statt Array)
15.11.2004 10:27:48
EtoPHG
Hallo Peter,
Warum ist .SQL ein Array ? (Vorheriger Post hat Fehler, Klammer fehlt am Schluss)
Versuchs mal mit:
.Sql = "SELECT v2ad1001.Nummer, v2ad1001.titel, v2ad1001.Vorname," & _
" v2ad1001.Name, v2ad1001.Strasse, v2ad1001.PLZ, v2ad1001.ort " & _
" FROM c:\Tmp\v2ad1001 v2ad1001" & _
" WHERE v2ad1001.name like ’%" & strName & "%’" & _
" AND v2ad1001.vorname like ’%" & strVorname & "%’" & _
" AND v2ad1001.Nummer like ’%" & strNummer & "%’" & _
" AND v2ad1001.ort like ’%" & strOrt & "%’"
Gruss Hansueli
AW: Nachtrag SQL (String statt Array)
15.11.2004 11:23:26
Peter
Hallo Hans,
Danke, Dein Hinweis war die Lösung. Ohne Array funktioniert das ganze.
Grüße Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige