VB 5 und SQl

hi,

ich habe ein kleines problem bzw. ein Denkfehler.
und zwar habe ich eine DB die alle Daten aus der Tabelle( Bsp. Namen) werden in eine Listbox eingetragen.
Das geht soweit nur ist jetzt noch eine schaltfläche, wenn man sie betaetigt geht eine fenster auf mit einer textbox auf wo man eine SQL Abfrage eingeben kann. wenn man dies gemacht hat wird die Eingabe in einer Variable sqlabfrage gespeichert. dies variable ist als String declariert, danach wird dieses Fenster geschlossen und alle werte werden neu eingelesen. der Source vom einlesen sieht wie folgt aus. ein kleiner Ausschnitt

public sub einlesen()
dim …
.
.
.
.
if sqlabfrage="" then
set rs=db.openrecordset("Select *from Daten)
else
set rs=db.openrecordset(sqlabfrage)
end if
rs.movefirst
do while not db.eof
list1.additem(rs!Name)
loop
.
.
.
end sub

es functioniert soweit das alle Daten eingelesen werden und auch die SQL abfrage geht, nur wenn ich dann alle Datensaetze wieder einlesen möchte, mache ich das so

public sub all()
sqlabfrage=""
einlesen
end sub

wenn ich keine sqlabfrage eingegeben habe dann geht das, aber sobald so eine abfrage eingegeben wurde, dann listet er mir dann auch nur wieder die datensaetze auf die er bei der abfrage aufgelistet hat. er zeigt nicht alle datensaetze an. Was ist mein Fehler und wie bekomme ich ihn weg?
Für eure Hilfe ein grosses Danke im voraus

Ciao Alex

Servus Alex

Du machst ein openrecordset, aber anscheinend nie ein close, oder?

Vor dem nächsten openrecordset solltest du also irgendwo folgende Befehle einbauen:

rs.close
set db = nothing

Nicht getestet - alle Angaben ohne Gewähr … :wink:

Ciao
Roland

public sub einlesen()
.
.
if sqlabfrage="" then
set rs=db.openrecordset("Select *from Daten)
else
set rs=db.openrecordset(sqlabfrage)
end if
rs.movefirst
do while not db.eof
list1.additem(rs!Name)
loop
.
.
end sub

es functioniert soweit das alle Daten eingelesen werden und
auch die SQL abfrage geht, nur wenn ich dann alle Datensaetze
wieder einlesen möchte, mache ich das so

public sub all()
sqlabfrage=""
einlesen
end sub

wenn ich keine sqlabfrage eingegeben habe dann geht das, aber
sobald so eine abfrage eingegeben wurde, dann listet er mir
dann auch nur wieder die datensaetze auf die er bei der
abfrage aufgelistet hat. er zeigt nicht alle datensaetze an.
Was ist mein Fehler und wie bekomme ich ihn weg?
Für eure Hilfe ein grosses Danke im voraus

Servus Alex

Du machst ein openrecordset, aber anscheinend nie ein close,
oder?

Vor dem nächsten openrecordset solltest du also irgendwo
folgende Befehle einbauen:

rs.close
set db = nothing

Nicht getestet - alle Angaben ohne Gewähr … :wink:

Ciao
Roland

hi roland,

stimmt ich mache nie rs.close! ich dachte durch erneutes öffnen sollte es gehen? Muss ich denn db auf nothing setzen? Dann muss ich ja die DB komplett neu öffnen?
danke für deine antwort :smile:

Ciao Alex

public sub einlesen()
.
.
if sqlabfrage="" then
set rs=db.openrecordset("Select *from Daten)
else
set rs=db.openrecordset(sqlabfrage)
end if
rs.movefirst
do while not db.eof
list1.additem(rs!Name)
loop
.
.
end sub

es functioniert soweit das alle Daten eingelesen werden und
auch die SQL abfrage geht, nur wenn ich dann alle Datensaetze
wieder einlesen möchte, mache ich das so

public sub all()
sqlabfrage=""
einlesen
end sub

wenn ich keine sqlabfrage eingegeben habe dann geht das, aber
sobald so eine abfrage eingegeben wurde, dann listet er mir
dann auch nur wieder die datensaetze auf die er bei der
abfrage aufgelistet hat. er zeigt nicht alle datensaetze an.
Was ist mein Fehler und wie bekomme ich ihn weg?
Für eure Hilfe ein grosses Danke im voraus

Servus Alex

Ich habe es jetzt bei mir ausprobiert, allerdings mit VB 6 (englisch), und zwar habe ich 3 verschiedene SQL-Abfragen auf immer die selbe DB gemacht, ohne close dazwischen - und es hat so funktioniert, wie du es eigentlich haben willst …

Das wird dich natürlich nicht befriedigen, daher biete ich dir an, dass du mir dein ganzes Programm schickst, wenn du willst, damit ich mir anschauen kann, wo der Fehler liegen könnte.
Ich weiß allerdings noch nicht, wann ich dazu kommen werde, es mir anzuschauen. Kann sein, dass es erst morgen oder übermorgen soweit ist.

Salü
Roland

stimmt ich mache nie rs.close! ich dachte durch erneutes
öffnen sollte es gehen? Muss ich denn db auf nothing setzen?
Dann muss ich ja die DB komplett neu öffnen?
danke für deine antwort :smile:

Servus Alex

Ich habe es jetzt bei mir ausprobiert, allerdings mit VB 6
(englisch), und zwar habe ich 3 verschiedene SQL-Abfragen auf
immer die selbe DB gemacht, ohne close dazwischen - und es hat
so funktioniert, wie du es eigentlich haben willst …

Das wird dich natürlich nicht befriedigen, daher biete ich dir
an, dass du mir dein ganzes Programm schickst, wenn du willst,
damit ich mir anschauen kann, wo der Fehler liegen könnte.
Ich weiß allerdings noch nicht, wann ich dazu kommen werde, es
mir anzuschauen. Kann sein, dass es erst morgen oder
übermorgen soweit ist.

Salü
Roland

hi Roland,

cih werde es heute abend noch einmal probieren. ich kann dir die 2 formen gerne zusenden, sollte ich es nicht hinbekommen :smile:
Für Deine Hilfe bedanke ich mich im voraus :smile:
also denn ciao Alex

stimmt ich mache nie rs.close! ich dachte durch erneutes
öffnen sollte es gehen? Muss ich denn db auf nothing setzen?
Dann muss ich ja die DB komplett neu öffnen?
danke für deine antwort :smile: