[OK]SQLite et DELETE
Publié : mar. 20/sept./2022 12:48
J'ai encore un soucis avec SQLITE.
Dans ma table datetest j'ai colonne id et colonne dateR
J'aimerai faire en sorte de pouvoir limiter la suppression de lignes avec les même données X dans une certaine limit.
J'ai vu que SQLite en PB n'aimait pas les condition avec ORDER BY Y ASC LIMIT Z
J'ai donc formaté ma requète ainsi.
Ce qui m'affiche comme requete lorsque je fais : DeleteRow(#MaBase,"2022-04-04")
Ce qui me parait bien.
Sauf que mon LIMIT 1 passe à la trappe et toutes les lignes contenant "2022-04-04" dans dateR sont virées. Faut peut être passer par un DatabaseQuery() avant ? J'avoue que je suis un peu peaumé
Amis de la BDD si vous passez par là.
Dans ma table datetest j'ai colonne id et colonne dateR
J'aimerai faire en sorte de pouvoir limiter la suppression de lignes avec les même données X dans une certaine limit.
J'ai vu que SQLite en PB n'aimait pas les condition avec ORDER BY Y ASC LIMIT Z
J'ai donc formaté ma requète ainsi.
Code : Tout sélectionner
Procedure DeleteRow(Base, Ladate$, l$="1")
Protected R
R = MessageRequester("Confirmation","Souhaitez vous réellement supprimer la date "+Ladate$+ " ?",#PB_MessageRequester_YesNo|#MB_ICONQUESTION)
Select R
Case #PB_MessageRequester_Yes
If OpenDatabase(#MaBase, Filename$, "", "")
;Requete$ = "DELETE FROM "+TableName$+ " WHERE "+ColDate$ + "='"+Ladate$+"' ORDER BY "+ColDate$+" ASC LIMIT "+l$
Requete$ = "DELETE FROM "+TableName$+ " WHERE "+ColDate$ + "= (SELECT "+ColDate$+ " FROM "+TableName$+" WHERE "+ColDate$ + "='"+Ladate$+"' ORDER BY "+ColDate$ + " ASC LIMIT "+l$ +")"
Debug Requete$
Result = DatabaseUpdate(Base, Requete$)
If Result = 0
erreur$ = DatabaseError()
Debug "Erreur delete : " + erreur$
Else
Debug Ladate$ + " a été supprimé !"
Result = 1
EndIf
FinishDatabaseQuery(#MaBase)
CloseDatabase(#MaBase)
EndIf
Case #PB_MessageRequester_No
Result = 0
Default
Result = 0
EndSelect
ProcedureReturn Result
EndProcedure
Code : Tout sélectionner
DELETE FROM datetest WHERE dateR= (SELECT dateR FROM datetest WHERE dateR='2022-04-04' ORDER BY dateR ASC LIMIT 1)
Sauf que mon LIMIT 1 passe à la trappe et toutes les lignes contenant "2022-04-04" dans dateR sont virées. Faut peut être passer par un DatabaseQuery() avant ? J'avoue que je suis un peu peaumé
Amis de la BDD si vous passez par là.