Xojo Conferences
MBSSep2018MunichDE
XDCMay2019MiamiUSA

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

Back to the thread list
Previous thread: listboxcellkeydown: wie kann ich die Cursortasten auslesen?
Next thread: =?US-ASCII?Q?Re: REALbasic Personal Mac OS X =3D=3FISO-8859-1=3F?= =?US-ASCII?Q?Q=3Ff=3DFCr=5F?=


Re: wie SQL-Tabelle leeren (nicht löschen!)??   -   Maximilian Tyrtania
  Re: wie SQL-Tabelle leeren (nicht löschen!) =3F??   -   Roland Quadstege
    wie SQL-Tabelle leeren (nicht löschen!)? =3F?   -   Roland Quadstege
     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!)??   -   Maximilian Tyrtania

Re: wie SQL-Tabelle leeren (nicht löschen!) =3F??
Date: 06.08.09 14:47 (Thu, 06 Aug 2009 15:47:30 +0200)
From: Roland Quadstege

Am 06.08.2009 um 09:35 schrieb 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?

Also, mit delete klappt es prima! Ob truncate wirklich genauso
funktioniert, werde ich noch mal ausprobieren. Lt. Handbuch sollte es.

Ich hatte da in meinem Code auch einige merkwürdige Zeilen drin, die
dazu führten, dass es nicht klappen konnte.
Nun geht's - dank auch deiner Hilfe.

Gruß und nochmal danke
Roland

>
>> 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
>

wie SQL-Tabelle leeren (nicht löschen!)? =3F?
Date: 05.08.09 14:21 (Wed, 05 Aug 2009 15:21:52 +0200)
From: Roland Quadstege
Hallo Experten,

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")
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.

Gruß vom sonnigen Niederrhein.
Roland

Re: wie SQL-Tabelle leeren (nicht löschen!) =3F??
Date: 06.08.09 14:43 (Thu, 06 Aug 2009 15:43:05 +0200)
From: Roland Quadstege

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=Die 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


>