Verfasst: 10.10.2008 12:21
1. SUPERGEIL !!!!!!!!!!!!!!!!!!!!!!!!!! Muss ich dafür die neueste Version von Comate runterladen, oder geht das auch so?
2. Ich wollte es erst nen neues Thema aufmachen, aber da du hier grad rumschwirrst, schreib ich mein - diesmal nicht ganz so schlimmes Maleur - mal hier rein, da du bislang am besten mit meinem Programm vertraut bist und dies hier wohl relativ früh lesen wirst, zudem puste ich damit das Forum nicht unnötig mit neuen Themen auf:
Komischerweise steigt antiproportional zur Komplexität der zu bewältigenden Aufgaben auch meine Fehlerfrequenz, mit anderen Worten: Bei den billigsten Dinger, schleichen sich die dicksten Hühner ein: Ich hab in meinem Programm eine Funktion, die es ermöglicht Datensätze zu löschen. Meine Tabellen in meiner Datenbank sind - wie du eventuell noch weisst - nach folgendem Schema aufgebaut:
FragenID INT, Frage STRING, AntwortID STRING, Thema STRING, HL INT, Link STRING.
Beim Löschen wird der Datensatz entfernt, es entsteht aber innerhalb der FragenID - Nummerierung eine Lücke. Beispiel: Lösche ich zwischen FragenID = 7 und Fragen ID = 9 den Datensatz mit der FragenID = 8 dann lautet die Nummerierung 1, 2, 3 ,4 , 5, 6, 7, 9, 10 .... Um das anschließend wieder zu korrigieren, habe ich in VB eine simple Prozedur geschrieben, die nach dem Löschvorgang die Datensätze neu nummeriert:
Dies wollte ich nun auch mit PB realsieren. Da ich auch einige HTML - Links als Antworten hab (keine Angst Kiffi, das RTF-Feld funktioniert noch
; die hatte ich schon immer drin, da ich beispielsweise per HTML auch PDF-Dateien aufrufen kann, die dann als Antwort fungieren), konnte ich in der SQL-Abfrage nach dem WHERE nicht immer AntwortID als Identifikator nutzen, da dieses Feld aus dem eben genannten Grund nicht immer einen Wert enthielt (Bei HTML Seiten erhielt HL, der sonst den Wert Null hatte, den Wert 1, und Link enthielt den Link (welch Wunder
) und AntwortID war infolgedessen leer, da ja keine Textantwort existierte, sondern ein Link, der eine HTML Seite aufrief). Mein erster Versuch in PB lautete daher:
Ich kann auch nicht Frage alleine als Identifikator nutzen, da sich manche Fragen gleichen.
Dann habe ich aber in meinem SQL-Manager (ein Prog zur Editierung der Datenbank) gesehen, dass es rowid gibt, einen Wert der die Position des Datensatzes wiedergibt. Mithin lautete mein 2. Versuch:
In beiden Fällen (Versuch 1 und Versuch 2) - ich habs mit dem Debugger und der Beobachtungsfunktion überprüft - durchläuft das Programm jedoch nur einmal die WHILE - WEND - Schleife, obgleich mindestens 10 Datensätze in meinem Testprojekt existieren. Es tritt also keine Fehlermeldung auf - was auch korrekt ist, da ja kein Fehler bei der Datenbankoperation selbst entsteht. Die Datenbankanbindung ist fehlerfrei, und ich bin mir ziemlich sicher, dass kein Tippfehler im Programm ist
. Wär super, wenn du mir auch diesmal wieder aus der Patsche helfen könntest....*Bud ist schon bestellt*....Kein Witz jetzt, wenn das Prog fertig ist, werde ich auf jeden Fall deinen Namen erwähnen - das ist sicher !!!
Wenn jetzt also das Scrollproblem und dieses hier behoben sind, dann gehe ich heute feiern! Sonst lief alles nämlich richtig genial und die restlichen Funktionen ließen sich zum Teil um einiges schneller proggen als erwartet, da manches in PB - man glaubt es kaum - schneller zu verwirklichen ist als mit VB, insbesondere Datenbank-Geschichten, und das trotz ADO...einzige Ausnahme: siehe oben...
Vielen Dank im Voraus!
//EDIT: Frage 1 hat sich erübrigt, hab eben gelesen, dass dieses Programmiergenie beim Hinweis auf ein neues Update tatsächlich mein Beispiel gewählt hat um seine neue Funktion vorzustellen, ich fühl mich grad so, als hätte ich Picasso nen Motiv geliefert...
2. Ich wollte es erst nen neues Thema aufmachen, aber da du hier grad rumschwirrst, schreib ich mein - diesmal nicht ganz so schlimmes Maleur - mal hier rein, da du bislang am besten mit meinem Programm vertraut bist und dies hier wohl relativ früh lesen wirst, zudem puste ich damit das Forum nicht unnötig mit neuen Themen auf:
Komischerweise steigt antiproportional zur Komplexität der zu bewältigenden Aufgaben auch meine Fehlerfrequenz, mit anderen Worten: Bei den billigsten Dinger, schleichen sich die dicksten Hühner ein: Ich hab in meinem Programm eine Funktion, die es ermöglicht Datensätze zu löschen. Meine Tabellen in meiner Datenbank sind - wie du eventuell noch weisst - nach folgendem Schema aufgebaut:
FragenID INT, Frage STRING, AntwortID STRING, Thema STRING, HL INT, Link STRING.
Beim Löschen wird der Datensatz entfernt, es entsteht aber innerhalb der FragenID - Nummerierung eine Lücke. Beispiel: Lösche ich zwischen FragenID = 7 und Fragen ID = 9 den Datensatz mit der FragenID = 8 dann lautet die Nummerierung 1, 2, 3 ,4 , 5, 6, 7, 9, 10 .... Um das anschließend wieder zu korrigieren, habe ich in VB eine simple Prozedur geschrieben, die nach dem Löschvorgang die Datensätze neu nummeriert:
Code: Alles auswählen
ACHTUNG VB - CODE!
Public Sub Durchnummerieren()
Dim iMax, in As Integer
iMax = RS1.RecordCount ;RS1 ist ein Objekt von Typ Recordset
RS1.MoveFirst
For in = 1 To iMax
RS1.Fields("FragenID") =in
RS1.Update
If RS1.EOF Then Exit For
RS1.MoveNext
Next in
End Sub


Code: Alles auswählen
Procedure Durchnummerieren ()
in = 0
SSQLTemp = "SELECT * FROM " + sProjektname
If DatabaseQuery(#DB_QM, sSQLTemp)
FirstDatabaseRow(#DB_QM)
While NextDatabaseRow(#DB_QM)
in = in + 1
sTempAntwortID = ""
sTempFrage = ""
sTempAntwortID = GetDatabaseString(#DB_QM,2)
sTempFrage = GetDatabaseString(#DB_QM,1)
If sTempAntwortID <> ""
sSQLUpdate = "UPDATE " + sProjektname + " SET FragenID = " + Str (in) + " WHERE AntwortID = '" +sTempAntwortID +"' "
If Not DatabaseUpdate (#DB_QM, sSQLUpdate)
Error ("Fehler beim Durchnummerieren!")
EndIf
Else
sSQLUpdate = "UPDATE " + sProjektname + " SET FragenID = " + Str (in) + " WHERE Frage = '" +sTempFrage +"' "
If Not DatabaseUpdate (#DB_QM, sSQLUpdate)
Error ("Fehler beim Durchnummerieren!")
EndIf
EndIf
Wend
EndIf
EndProcedure
Dann habe ich aber in meinem SQL-Manager (ein Prog zur Editierung der Datenbank) gesehen, dass es rowid gibt, einen Wert der die Position des Datensatzes wiedergibt. Mithin lautete mein 2. Versuch:
Code: Alles auswählen
Procedure Durchnummerieren ()
in = 0
SSQLTemp = "SELECT * FROM " + sProjektname
If DatabaseQuery(#DB_QM, sSQLTemp)
FirstDatabaseRow(#DB_QM)
While NextDatabaseRow(#DB_QM)
in = in + 1
sSQLUpdate = "UPDATE " + sProjektname + " SET FragenID = " + Str (in) + " WHERE rowid = " + Str(in)
If Not DatabaseUpdate (#DB_QM, sSQLUpdate)
Error ("Fehler beim Durchnummerieren!")
EndIf
Wend
EndIf
EndProcedure

Wenn jetzt also das Scrollproblem und dieses hier behoben sind, dann gehe ich heute feiern! Sonst lief alles nämlich richtig genial und die restlichen Funktionen ließen sich zum Teil um einiges schneller proggen als erwartet, da manches in PB - man glaubt es kaum - schneller zu verwirklichen ist als mit VB, insbesondere Datenbank-Geschichten, und das trotz ADO...einzige Ausnahme: siehe oben...

Vielen Dank im Voraus!
//EDIT: Frage 1 hat sich erübrigt, hab eben gelesen, dass dieses Programmiergenie beim Hinweis auf ein neues Update tatsächlich mein Beispiel gewählt hat um seine neue Funktion vorzustellen, ich fühl mich grad so, als hätte ich Picasso nen Motiv geliefert...
