Xojo Conferences
XDCMay2019MiamiUSA

Re: wie SQL-Tabelle leeren (nicht löschen!)?? (Real Studio network user group Deutschland Mailinglist archive)

Back to the thread list
Previous thread: wie eine neue Tabelle in eine SQL-Datenbank einf ügen?
Next thread: listboxcellkeydown: wie kann ich die Cursortasten auslesen?


Re: wie SQL-Tabelle leeren (nicht löschen!) =3F??   -   Roland Quadstege
  Re: wie SQL-Tabelle leeren (nicht löschen!)??   -   Christian Hahn
    Re: wie SQL-Tabelle leeren (nicht löschen!)??   -   Christian Hahn
     Re: wie SQL-Tabelle leeren (nicht löschen!)??   -   Maximilian Tyrtania
      Re: wie SQL-Tabelle leeren (nicht löschen!) =3F??   -   Roland Quadstege
    Re: wie SQL-Tabelle leeren (nicht löschen!)??   -   Maximilian Tyrtania

Re: wie SQL-Tabelle leeren (nicht löschen!)??
Date: 06.08.09 15:36 (Thu, 6 Aug 2009 16:36:43 +0200)
From: Christian Hahn
Hallo, Roland,
Datenbank-Programmierung ist recht weitläufig, bis man sich einigermaßen
sicher bewegen kann. Für die Anwendung in RB habe ich viel gelernt aus
OrdersDatabaseExample.pdf im Ordner Examples/Databas Example. Und ein
ordentliches Buch zu SQL ist sehr hilfreich. Ich habe gelernt aus SQL for
dummies. Und die anderen hier haben bestimmt noch bessere Tipps.
beste Grüße, Christian Hahn.

----- Original Message -----
From: "Roland Quadstege" <<email address removed>>
To: "REALbasic NUG German" <<email address removed>>
Sent: Thursday, August 06, 2009 3:43 PM
Subject: Re: wie SQL-Tabelle leeren (nicht löschen!)??


Am 05.08.2009 um 16:58 schrieb Christian Hahn:

> Hallo, Roland,
>
> db.SQLExecute ("truncate table adressdaten")
>
> Ich würde da sagen:
> db.SQLExecute("DELETE FROM adressdaten")
> Man kann natürlich auch eine Bedingung einbauen:
> db.SQLExecute("DELETE FROM adressdatenWHERE rowID = " + str(ID)
> oder irgendeine andere WHERE-Bedingung.
>
> db.Commit
> db.Close
> end if
> else
> MsgBox "NILÐe Datenbank konnte nicht geöffnet werden!"
> end if
>
> db.Commit
> db.Close
> Dieses Commit und Close sind zuviel. In die DB kann nichts übertragen
> werden und sie kann nicht geschlossen werden, wenn sie gar nicht geöffnet
> ist
>
> Für das Speichern neuer Datensätze in der Tabelle sieht mein Code so aus:
>
> rec = New DatabaseRecord
>
> rec.Column("Datum") = NamensGrid.WritableCell(2, i).Text
> rec.Column("Wt") = NamensGrid.WritableCell(3, i).Text
> rec.Column("og") = DatenGrid.WritableCell(1, i).Text
> rec.Column("VonStd") = DatenGrid.WritableCell(2, i).Text
> rec.Column("BisStd") = DatenGrid.WritableCell(3, i).Text
> rec.Column("Kommentar") = DatenGrid.WritableCell(4, i).Text
>
> DB_Inst.InsertRecord("KalenderDaten",rec)
>
> DB_Inst.Commit
>
> beste Grüße, Christian Hahn.

Hallo Christian,

vielen Dank für Deine Tips,

ich habe mal meine commits auf die logischen Fälle reduziert und siehe
da: jetzt sieht's schon ganz anders aus.

Ich muss ja zugeben, dass ich noch nicht viel mit Datenbanken gemacht
habe.
Wenn ich mir den Quellcode verschiedener Beispiele ansehe, trifft mich
schier der Schlag.
Daher fange ich ganz, ganz langsam an.

Vielen Dank noch mal für die schnelle Antwort.

Gruß
Roland


>

Re: wie SQL-Tabelle leeren (nicht löschen!)??
Date: 05.08.09 15:58 (Wed, 5 Aug 2009 16:58:59 +0200)
From: Christian Hahn
Hallo, Roland,

db.SQLExecute ("truncate table adressdaten")

Ich würde da sagen:
db.SQLExecute("DELETE FROM adressdaten")
Man kann natürlich auch eine Bedingung einbauen:
db.SQLExecute("DELETE FROM adressdatenWHERE rowID = " + str(ID)
oder irgendeine andere WHERE-Bedingung.

db.Commit
db.Close
end if
else
MsgBox "NILÐe Datenbank konnte nicht geöffnet werden!"
end if

db.Commit
db.Close
Dieses Commit und Close sind zuviel. In die DB kann nichts übertragen werden
und sie kann nicht geschlossen werden, wenn sie gar nicht geöffnet ist

Für das Speichern neuer Datensätze in der Tabelle sieht mein Code so aus:

rec = New DatabaseRecord

rec.Column("Datum") = NamensGrid.WritableCell(2, i).Text
rec.Column("Wt") = NamensGrid.WritableCell(3, i).Text
rec.Column("og") = DatenGrid.WritableCell(1, i).Text
rec.Column("VonStd") = DatenGrid.WritableCell(2, i).Text
rec.Column("BisStd") = DatenGrid.WritableCell(3, i).Text
rec.Column("Kommentar") = DatenGrid.WritableCell(4, i).Text

DB_Inst.InsertRecord("KalenderDaten",rec)

DB_Inst.Commit

beste Grüße, Christian Hahn.

Re: wie SQL-Tabelle leeren (nicht löschen!)??
Date: 06.08.09 08:35 (Thu, 06 Aug 2009 09:35:24 +0200)
From: Maximilian Tyrtania
am 05.08.2009 16:58 Uhr schrieb Christian Hahn unter
<email address removed>:

> Hallo, Roland,
>
> db.SQLExecute ("truncate table adressdaten")
>
> Ich würde da sagen:
> db.SQLExecute("DELETE FROM adressdaten")

Indes ist "truncate table sometable" ein durchaus ehrenwerter Befehl. Wird
er von der REALSQLDB nicht unterstützt?

> Man kann natürlich auch eine Bedingung einbauen:
> db.SQLExecute("DELETE FROM adressdatenWHERE rowID = " + str(ID)
> oder irgendeine andere WHERE-Bedingung.

Kann man, wenn man, anders als Roland, nur bestimmte Datensätze löschen
möchte.

Ciao,

Maximilian Tyrtania

Re: wie SQL-Tabelle leeren (nicht löschen!)??
Date: 05.08.09 15:17 (Wed, 05 Aug 2009 16:17:22 +0200)
From: Maximilian Tyrtania
am 05.08.2009 15:21 Uhr schrieb Roland Quadstege unter
<email address removed>:

> Hallo Experten,

Nicht doch...

> ich versuche mich seit einigen Tagen darin, eine SQL-Datenbank
> anzulegen und anschließen mit "Leben" zu füllen.
> Was mir noch nicht gelingt ist u. a. das Löschen des Tabelleninhaltes.
> Ich habe versucht Beispielprogramme an meine Bedürfnisse anzupassen -
> aber es geht auch dann nicht. Hier mal mein Quellcode:
>
> Dim dbFile as FolderItem
> Dim db as REALSQLdatabase
> Dim rec As DatabaseRecord
> dim rs as RecordSet
> dim z as Integer
> db= New REALSQLdatabase
> dbFile = GetFolderItem("Personendaten.rsd")
> if dbFile <> nil then
> if db.Error =False then
> listbox1.DeleteAllRows ' hat noch keine Bedeutung für das Löschen
> db.DatabaseFile = dbFile
> db.SQLExecute ("truncate table adressdaten")

An der Stelle würde ich mal auf db.error checken. Also:

If db.error then
Msgbox (db.errormessage)
end if

> MsgBox str(db.DatabaseFile.Length)
> MsgBox "Tabelle Adressdaten gelöscht"
> db.Commit
> db.Close
> end if
> else
> MsgBox "NIL=Die Datenbank konnte nicht geöffnet werden!"
> end if
> db.Commit
> db.Close
>
> Wo ist da der Klopper?
>
> Ein weiteres Problem: Ich lege eine Tabelle einmalig an und schreibe
> dann mal eine paar Zeilen Text rein (über eine Listbox, die ich zur
> Eingabe und auch zur Ausgabe der Daten nutze). Ich fand's gut, dass
> das gleich geklappt hat. Wenn ich dann aber in diese gleiche Tabelle
> weiteren Text mit "insert" anhängen will, dann kommt die Meldung
> "Cannot commit - no transaction is active 1". Kennt das jemand? Kennt
> jemand eine Lösung?
>
> Vielleicht kann mir jemand weiterhelfen.

Nicht, wenn wir nicht sehen können, wie der code da genau aussieht. Ist da
evtl. schonmal commit aufgerufen worden? In dem geposteten code wird
db.commit auch einmal zuviel aufgerufen. db könnte in den letzten Zeilen
auch nil sein.

Grüße aus Berlin,

Maximilian Tyrtania