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