Remove na >3 keer draaien
- Kees
- Beheerder
- Berichten: 3149
- Lid geworden op: 28 nov 2005, 22:07
- SAM-versie: 4.2.2.*
- Database: MySQL
- Windows: 11
- Locatie: Bergen op Zoom
- Contacteer:
Remove na >3 keer draaien
Een leuke na denker.
Ik zoek een manier om nummers uit een bepaalde categorie, na meer dan 3 keer gedraaid te zijn, uit de categorie gehaald wordt . ( Remove )
Dus niet van de harde schijf verwijderen.
Ik zoek een manier om nummers uit een bepaalde categorie, na meer dan 3 keer gedraaid te zijn, uit de categorie gehaald wordt . ( Remove )
Dus niet van de harde schijf verwijderen.
- Wout
- Beheerder
- Berichten: 3501
- Lid geworden op: 03 dec 2007, 14:17
- SAM-versie: 2019.3
- Database: MariaDB
- Windows: 11
- Locatie: West-Brabant
- Contacteer:
Re: Remove na >3 keer draaien
Kan dat niet met de standaardinstellingen van SAM om het te remove`en?
Of is het alleen uit de categorie halen en niet uit de database van SAM?
Of is het alleen uit de categorie halen en niet uit de database van SAM?
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
- Kees
- Beheerder
- Berichten: 3149
- Lid geworden op: 28 nov 2005, 22:07
- SAM-versie: 4.2.2.*
- Database: MySQL
- Windows: 11
- Locatie: Bergen op Zoom
- Contacteer:
Re: Remove na >3 keer draaien
Zoals ik het op het plaatje zie, moet ik dit handmatig doen bij alle nummers uit die categorie.
Is niet te doen bij 800+ nummers.
Zeker niet als ik het ga toepassen bij nog meerdere categorieën.
Het is de bedoeling dat PAL alle nummers uit die bepaalde categorie zet zoals je op het plaatje aangeeft.
Wel uit de categorie maar niet uit de database.
Ik denk zelf niet dat dat met PAL kan.
Ben het nog nergens tegen gekomen.
Bedankt voor het meedenken.
Is niet te doen bij 800+ nummers.
Zeker niet als ik het ga toepassen bij nog meerdere categorieën.
Het is de bedoeling dat PAL alle nummers uit die bepaalde categorie zet zoals je op het plaatje aangeeft.
Wel uit de categorie maar niet uit de database.
Ik denk zelf niet dat dat met PAL kan.
Ben het nog nergens tegen gekomen.
Bedankt voor het meedenken.
- Wout
- Beheerder
- Berichten: 3501
- Lid geworden op: 03 dec 2007, 14:17
- SAM-versie: 2019.3
- Database: MariaDB
- Windows: 11
- Locatie: West-Brabant
- Contacteer:
Re: Remove na >3 keer draaien
Het was even denken, maar ik heb iets gemaakt.
Dit is een PAL die je kan starten (run), hij zal 2 vragen aan je stellen.
1: Na hoeveel keer gespeeld te hebben mag een nummer uit de categorie worden gehaald.
2: Maak een nummer uit de gekozen categorie.
Hierna krijg de aantallen te zien en daarna zal hij deze verwijderen uit de categorie.
Mocht je de aantallen al weten en de categoryID ook al, dan kun je de PAL verkorten in 1 zin.
In onderstaande voorbeeld het ik categoryID van 4 gebruikt en met meer dan 400 keer gespeeld.
Dit is een PAL die je kan starten (run), hij zal 2 vragen aan je stellen.
1: Na hoeveel keer gespeeld te hebben mag een nummer uit de categorie worden gehaald.
2: Maak een nummer uit de gekozen categorie.
Hierna krijg de aantallen te zien en daarna zal hij deze verwijderen uit de categorie.
Code: Selecteer alles
{Gebruik op eigen risico!
Zorg eerst voor een back-up voordat je deze PAL draait!}
PAL.loop := False;
var Q : TDataSet;
var Aantal: Integer;
var CatID, Msg, nrDel : String;
nrDel := InputBox('Aantal keer gedraaid', 'Na hoeveel keer gedraait mag het nummer uit de categorie worden gehaald?', '');
PAL.LockExecution;
Q := Query('SELECT * FROM category', [], False);
//resultaten opslaan in array
Q.First;
while not Q.EOF do
begin
Msg := Msg+'Keuze: '+IntToStr(Q['ID'])+' | Categorie: ' + Q['name']+ #13#10;
Q.Next;
end;
Q.Free;
PAL.UnLockExecution;
// laat een keuze maken vanuit de category ID
CatID := InputBox('Categorie opvragen', 'Maak een keuze uit categorieID waar de nummers mogen worden verwijderd!'+ #13#10 + #13#10 +Msg, '');
Q := Query('SELECT COUNT(*) aantal FROM categorylist c JOIN songlist s ON c.songID = s.ID WHERE categoryID = :categorie AND s.count_played >= :keuze', [CatID, nrDel], True);
Aantal := Q['aantal'];
ShowMessage(IntToStr(Aantal)+' nummers worden er verwijderd uit de gekozen categorie!');
//hier gaat het gebeuren
ExecSQL('DELETE c FROM categorylist c JOIN songlist s ON c.songID = s.ID WHERE c.categoryID = :categorie AND s.count_played >= :keuze', [CatID, nrDel]);
In onderstaande voorbeeld het ik categoryID van 4 gebruikt en met meer dan 400 keer gespeeld.
Code: Selecteer alles
ExecSQL('DELETE c FROM categorylist c JOIN songlist s ON c.songID = s.ID WHERE c.categoryID = 4 AND s.count_played >= 400', []);
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
- Kees
- Beheerder
- Berichten: 3149
- Lid geworden op: 28 nov 2005, 22:07
- SAM-versie: 4.2.2.*
- Database: MySQL
- Windows: 11
- Locatie: Bergen op Zoom
- Contacteer:
Re: Remove na >3 keer draaien
Top Wout, het werkt PERFECT.
Super bedankt !!
Super bedankt !!
- Kees
- Beheerder
- Berichten: 3149
- Lid geworden op: 28 nov 2005, 22:07
- SAM-versie: 4.2.2.*
- Database: MySQL
- Windows: 11
- Locatie: Bergen op Zoom
- Contacteer:
Re: Remove na >3 keer draaien
Het tweede korte script werkt perfect.
Het eerste script ook als je maar een paar categorieën hebt.
Bij veel categorieën kun je het nummer onderaan niet invullen.
Scrollen lukt niet.
Uitdaging ??

Het eerste script ook als je maar een paar categorieën hebt.
Bij veel categorieën kun je het nummer onderaan niet invullen.
Scrollen lukt niet.
Uitdaging ??


- Wout
- Beheerder
- Berichten: 3501
- Lid geworden op: 03 dec 2007, 14:17
- SAM-versie: 2019.3
- Database: MariaDB
- Windows: 11
- Locatie: West-Brabant
- Contacteer:
Re: Remove na >3 keer draaien
Nee hoor, als je regel 18 verander in onderstaande dan kan er meer naast elkaar worden gezet.
Code: Selecteer alles
Msg := Msg+'('+IntToStr(Q['ID'])+')-->' + Q['name']+ #09;
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
- Kees
- Beheerder
- Berichten: 3149
- Lid geworden op: 28 nov 2005, 22:07
- SAM-versie: 4.2.2.*
- Database: MySQL
- Windows: 11
- Locatie: Bergen op Zoom
- Contacteer:
Re: Remove na >3 keer draaien
Bijna, kom nog ruimte te kort.
Er staan heel veel categorieën in SAM.
Heeeeeeeeeel veel.

Er staan heel veel categorieën in SAM.
Heeeeeeeeeel veel.


- Wout
- Beheerder
- Berichten: 3501
- Lid geworden op: 03 dec 2007, 14:17
- SAM-versie: 2019.3
- Database: MariaDB
- Windows: 11
- Locatie: West-Brabant
- Contacteer:
Re: Remove na >3 keer draaien
Voor heul veul categorieën. En anders wordt het opzoeken via SQL-editor (HeidySQl, PHPmyAdmin, MySQL admin)
Misschien is het opslaan van een TXT-file ook een oplossing, weet niet dat PAL dat ondersteund.
Code: Selecteer alles
//ID zoekert op categorie
PAL.loop := False;
var Q : TDataSet;
var Msg: String;
PAL.LockExecution;
Q := Query('SELECT * FROM category', [], False);
Q.First;
while not Q.EOF do
begin
Msg := Msg+'ID='+IntToStr(Q['ID'])+'->' + Q['name']+' || ';
Q.Next;
end;
Q.Free;
PAL.UnLockExecution;
ShowMessage(Msg);
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
- Kees
- Beheerder
- Berichten: 3149
- Lid geworden op: 28 nov 2005, 22:07
- SAM-versie: 4.2.2.*
- Database: MySQL
- Windows: 11
- Locatie: Bergen op Zoom
- Contacteer:
Re: Remove na >3 keer draaien
Ik heb ook deze nog, daar kan ik in scrollen..
Category-id.PAL
Kan dan die van jou gebruiken i.s.m. met deze.
Er wordt een oude vierkant monitor gebruikt dus blijft het aantal categorieën in beeld krijgen een probleem.
Category-id.PAL
Code: Selecteer alles
var Q : TDataSet ;
var nr : Integer = 40 ;
var catID : string;
// hieronder komt je Categorie-nummer
CatID := '' ;
if catID = '' then
begin
Q := Query('SELECT * FROM category',[],True) ;
While not Q.EOF do
Begin
WriteLn(Q['ID']);
WriteLn(Q['name']);
Q.Next ;
end;
Q.Free ;
PAL.Loop := False ;
end
else if (CatID > '') then
begin
//PAL.LockExecution ;
Q := Query('SELECT artist, title, filename FROM categorylist INNER JOIN songlist WHERE (songlist.ID = categorylist.songID) AND categoryID = (:CatID) ORDER BY filename DESC ',[CatID],True) ;
While not Q.EOF do
Begin
Queue.Addfile('C:\nummer\'+IntToStr(nr)+'.mp3', IpBottom) ;
Queue.Addfile(+Q['filename'], IpBottom) ;
nr := nr - 1 ;
Q.Next ;
End ;
Q.Free ;
//PAL.UnLockExecution ;
end ;
Er wordt een oude vierkant monitor gebruikt dus blijft het aantal categorieën in beeld krijgen een probleem.
-
- Vergelijkbare Onderwerpen
- Reacties
- Weergaves
- Laatste bericht
-
- 2 Reacties
- 941 Weergaves
-
Laatste bericht door cyberneticorganism