Forums Neueste Beiträge
 

Query Abfrage

11/05/2009 - 23:19 von Stefan Theobald | Report spam
Hallo@all!

ich weiß, ich bin hir in der Word NG, aber vielleicht weiß ja trotzdem einer
Rat - für Excel finde ich keine VBA Gruppe. Im "normalen" Excel Forum kam ich
nicht weiter.

Ich habe eine Query-Abfrage, die funktioniert im Query ohne Probleme.
Im VBA (Makro) hingegen kommt kein Ergebnis zurück. Ein Fehler tritt
allerdings auch nicht auf.

Im Excel-Forum war noch die Vermutung, dass der String zu lang sei - ist der
irgendwie auf 255 Zeichen beschrànkt?

Hier aus meinem 1. Poat im "normalen" Excel-Forum:

Eine Andere Abfrage hingegen funzt wunderbar im gleichen Makro!
Also es muss an der Abfrage (aber ja eigentlich nicht von der Syntax her)
liegen.

Ich habe auch schon die Zeile getrennt, da ich dachte er hat Probleme mit
der Lànge der Zeile, aber das ist es wohl auch nicht.

yAbfrage_ArtikeltextErmitteln = "SELECT S_ArtikelSpr_0.Bezeichnung " _
& "FROM PUB.S_ArtikelSpr S_ArtikelSpr_0, PUB.S_EAN S_EAN_0 " _
& "WHERE S_EAN_0.Firma = S_ArtikelSpr_0.Firma " _
& "AND S_EAN_0.Artikel = S_ArtikelSpr_0.Artikel " _
& "AND ((S_EAN_0.Firma=" & ySuchwert_Firma_ArtikeltextErmitteln & ") " _
& "AND (S_EAN_0.EAN=" & ySuchwert_ArtikeltextErmitteln & ") " _
& "AND (S_ArtikelSpr_0.Sprache='D'))"


Hier diese Abfrage (Suche über Artikelnummer anstatt EAN) ist auch in meinem
Makro (je nach Option wird die eine oder andere Anfrage eingesetzt)- die
funktioniert auch ohne Probleme und es wird sogar ein Wert zurück ins EXCEL
geliefert. - Warum nur bei der anderen nicht????

yAbfrage_ArtikeltextErmitteln = "SELECT S_ArtikelSpr_0.Bezeichnung FROM
PUB.S_ArtikelSpr S_ArtikelSpr_0 WHERE (S_ArtikelSpr_0.Firma=" &
ySuchwert_Firma_ArtikeltextErmitteln & ") AND (S_ArtikelSpr_0.Artikel=" &
ySuchwert_ArtikeltextErmitteln & ") AND (S_ArtikelSpr_0.Sprache='D')"


Im .NET VB hatte ich solche Probleme wegen zu langer Zeile noch nicht!


Hat jemand eine Idee???



Gruß
Stefan
 

Lesen sie die antworten

#1 Carsten Sekulla
12/05/2009 - 07:11 | Warnen spam
yAbfrage_ArtikeltextErmitteln = "SELECT S_ArtikelSpr_0.Bezeichnung " _
& "FROM PUB.S_ArtikelSpr S_ArtikelSpr_0, PUB.S_EAN S_EAN_0 " _
& "WHERE S_EAN_0.Firma = S_ArtikelSpr_0.Firma " _
& "AND S_EAN_0.Artikel = S_ArtikelSpr_0.Artikel " _
& "AND ((S_EAN_0.Firma=" & ySuchwert_Firma_ArtikeltextErmitteln & ") " _
& "AND (S_EAN_0.EAN=" & ySuchwert_ArtikeltextErmitteln & ") " _
& "AND (S_ArtikelSpr_0.Sprache='D'))"



Hi
weder bei den XL-Leuten noch ist derzeit die Hellseherkugel aktiv.
Für die Frage ob die Abfrage was bringt, sind schon von ein paar Infos mehr
wichtig.

Wie setzt du die Abfrage ab (mit ADO) gegen was für ein DB (ACCESS/MSQSL).
Welche Typ habe die Parameter
(ySuchwert_Firma_ArtikeltextErmitteln sieht aus wie String, hat aber bei dir
keine '. Warum verwendest du keine parameterisierte Abfrage?
Jedes ' in einem Artikeltext zerstört dir deine Abfrage.
Eine Begrenzung der SQL-Zeichelànge auf 255 gibt es bei ADO nicht, aber bei
einigen
internen XL- und WW-Datenzugriffen.

Um die Abfrage übersichtlicher zu bekommen, würde ich erstmal die Klammern
auflösen
und für die Tabellenname Variable verwenden.

cu CS

Ich würde das so machen:

Dim adoCN As ADODB.Connection
Dim cmd As ADODB.Command
Dim p As ADODB.Parameter


Set adoCN = New ADODB.Connection
' hier muss die korrekte Connectio-String rein
adocn.ConnectionString = 'connectionstring
adoCN.Open

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = adoCN
' > AND S_EAN_0.Firma= :P1" 'Parameter je nach Ziel-DB und Zugriffsmethode
cmd.CommandText = yAbfrage_ArtikeltextErmitteln
Set p = New ADODB.Parameter
p.Type = adVarChar
p.Value = ySuchwert_Firma_ArtikeltextErmitteln
p.Name = "P1"

cmd.Parameters.Append p

v = cmd.Execute.GetRows()

Ähnliche fragen