![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() |
![]() 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 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? |
![]() |
![]() |
![]() |
#2 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() 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 |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() |
![]() yeah
![]() erstes prob gelöst. 2. prob: gibt es ein synonym für TRUNCATE TABLE auf Access ? |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Nimm DELETE! Access unterstützt sowieso keine Transaktionen. mfg WB |
![]() |
![]() |
![]() |
#5 | |
Inventar
![]() |
![]() Zitat:
|
|
![]() |
![]() |
![]() |
#6 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() 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 |
![]() |
![]() |
![]() |
#7 |
Inventar
![]() |
![]() "Das Datenbakmodul konnte die Tabelle 'Chemikalien' nicht sperrren, da sie bereits von einem anderen Benutzer oder Vorgang bearbeitet wird."
hrmpf. any suggestions? |
![]() |
![]() |
![]() |
#8 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Ich würde sagen "unsauberer Ausstieg". Da hilft nur ein Neustart. In Zukunft alles sauber abschließen. mfg WB |
![]() |
![]() |
![]() |
#9 |
Inventar
![]() |
![]() ä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... |
![]() |
![]() |
![]() |
#10 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() 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 |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|