WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [VB] FieldCount be AccessRecordSet fehlt ? (http://www.wcm.at/forum/showthread.php?t=179139)

Potassium 24.11.2005 22:44

[VB] FieldCount be AccessRecordSet fehlt ?
 
Code:

Public Function Clean_Table()
Dim i As Integer, j As Variant
Dim Str(maxDataRows) As String, iFields As Integer

Set Rs = DB.OpenRecordset("SELECT * FROM " & sTable & " ORDER BY CH_ID")

i = 1
Do While Not Rs.EOF
    Str(i) = "INSERT INTO `" & sTable & "` VALUES (" & i & " , '"
    For iFields = 1 To Rs.Fieldcount - 1
        Str(i) = Str(i) & Replace(Replace(Rs.Fields(iFields).Value, "\", "\\"), "'", "\'") & "'"
        If iFields < Rs.Fieldcount - 1 Then
            Str(i) = Str(i) & ", '"
        End If
    Next iFields
    Str(i) = Str(i) & ")"
    i = i + 1
    Rs.MoveNext
Loop
Set Rs = DB.OpenRecordset("TRUNCATE TABLE " & sTable)
For Each j In Str
    Set Rs = DB.OpenRecordset(j)
    Call MySQL_Error
Next j
Call Update_Table

MsgBox "Datenbank gesäubert!", vbInformation, "OK"

End Function

das ist der sourcode.
wenn das recordset ein mysql-recordset is funktioniert es.
als normales "recordset" für access-dbs gibts dieses attribut aber ned.
jemand ne lösung dafür?

wbendl 25.11.2005 09:08

Hi!

Du hast nicht verraten wie du auf die DB zugreifst.

Und was ist ein mysql-recordset oder ein normales "recordset"?
Wo liegt der Unterschied?

Bei ADO heißt es auf jeden Fall: Recordset.Fields.Count


mfg

WB

Potassium 25.11.2005 14:26

yeah :cool:
erstes prob gelöst.
2. prob: gibt es ein synonym für TRUNCATE TABLE auf Access ?

wbendl 25.11.2005 14:42

Hi!

Nimm DELETE! Access unterstützt sowieso keine Transaktionen.


mfg

WB

Potassium 25.11.2005 14:48

Zitat:

Original geschrieben von wbendl
Hi!

Nimm DELETE! Access unterstützt sowieso keine Transaktionen.


mfg

WB

delete setzt mir aber den index ned zurück =/

wbendl 25.11.2005 15:10

Hi!

Danach hast du ja nicht gefragt!

Jetzt hast du ein echtes Problem. :-)

Bei älteren Versionen der Jet-DB genügt es, die DB zu komprimieren.
Das habe ich schon immer als Risiko angesehen.

Ein Typ wie du hat aber sicher immer die aktuellste Version. Da hilft nur die Tabelle löschen, und neu erstellen.

Insgesamt habe ich den Eindruck, daß irgendwo in deiner Programmlogik oder Umsetzung etwa zu Optimieren wäre. Solche Aktionen sollten eigentlich gar nicht notwendig werden.


mfg

WB

Potassium 25.11.2005 15:47

"Das Datenbakmodul konnte die Tabelle 'Chemikalien' nicht sperrren, da sie bereits von einem anderen Benutzer oder Vorgang bearbeitet wird."

hrmpf.
any suggestions?

wbendl 25.11.2005 16:14

Hi!

Ich würde sagen "unsauberer Ausstieg".

Da hilft nur ein Neustart.

In Zukunft alles sauber abschließen.


mfg

WB

Potassium 26.11.2005 10:49

ähem neustart ist aber nicht dein ernst oder?
das programm ist fertig geschrieben und funktioniert im prinzip wunderbar.
nur muss ich es von mysql auf ms access portieren udn da gibt es kleinere oder größere fehler...

wbendl 27.11.2005 07:56

Hi!

Doch das ist mein Ernst.

Entweder sind die Fehler in deinem Programm doch nicht so klein, oder du hast einen Bug in der Jet-Engine entdeckt.

Tatsache ist: Für einigen Aktionen muß die gesamte DB/Tabelle gesperrt werden. Wenn diese Sperre nicht ordnungsgemäß aufgehoben wird, kann niemand mehr zugreifen. Diese Blockade läßt sich nur mit einem Neustart beheben.


mfg

WB


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag