Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-06-2003, 21:38   #1
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Posizionamento record

Ciao a tutti;

O il seguente problema: Dovrei in una griglia dati, poter spostare l’ordine dei record visualizzati.
Mi spiego meglio con un esempio:

supponiamo che abbia visualizzati sulla griglia dati questi tre record:

RECORD-1
RECORD-2
RECORD-3

Dovrei poter spostare ad esempio il RECORD-3 nella posizione del RECORD-2, per cosi ottenere questo risultato:

RECORD-1
RECORD-3
RECORD-2

Etc… Etc…

Spero che mi possiate aiutare. Grazie 1000 a tutti. Carmen
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2003, 22:27   #2
tas
Senior Member
 
L'Avatar di tas
 
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
Un problema simile l'ho avuto anch'io nella tabella del piano dei conti (contabilità). L'ho risolto aggiungendo un campo nascosto "Ordine" nel quale il software va a impostare un numero progressivo partendo da 1. Il caricamento della griglia verrà effettuato con un recordset ottenuto da una query "SELECT ... FROM ... ORDER BY Ordine".
__________________
Chi non cerca trova.
tas è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2003, 02:31   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Dipende da come è ordinata la tabella e per quali campi...
Se c'è un campo contatore che è chiave primaria è già più difficile... La soluzione di tas è valida, ma inserisce molti problemi di gestione... Ad esempio il fatto che si deve riempire il campo che ordina la tabella successivamente all'inserimento del nuovo record (per trovare il valore da immettere nel campo)...
E se voglio ordinare un record per metterlo nella posizione 5 (ad esempio) devo incrementare tutti i record con ordine >= 5... Non è una cosa così agevole da gestire, più che altro per le prestazioni...

Una cosa più semplice sarebbe mettere lo scostamento dal contatore...
Ad esempio:
Codice:
Contatore Scostamento Posizione
1              +2               1
2              0                 0
3              -2                1
4              0                 0 
5              -4                2
Select * From Tabella Order By (Contatore+Scostamento), Posizione ASC;
Il risultato sarà:
3, 5, 1, 2, 4

Posizione è la posizione in cui mettere questo record fra quelli di pari cotatore+scostamento...al limite se ci fosse da dare un'altro ordinamento basta ordinare quelli che hanno questo valore uguale...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2003, 02:42   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ah se ti accontenti che a parità di contatore+scostamento non siano ordinate (ad esempio basterebbe un altro ordine relativo ad un altro campo del record) allora Posizione lo puoi anche togliere...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2003, 12:17   #5
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Cia ragazzi. Intanto grazie delle risposte. Comunque io volevo dire che non o problemi di ordinamento dei dati sulla griglia, perchè i dati sono nell'ordine di inserimento, qui l'ordinamento non mi interessa.

Quello che invece dovrei fare come avevo prospettato nel primo post, e di poter spostare un record in giù oppure in sù.

Magari se avete qualche consiglio più specifico ve ne sarei grata.
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 10-06-2003, 13:30   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non capisco se in giù o in su nella griglia o in giù o in sù all'interno del database...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 08:01   #7
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Non capisco se in giù o in su nella griglia o in giù o in sù all'interno del database...

La cosa sarebbe meglio se si potesse spostare all'interno del database, però in alternativa se ciò non fosse possibile andrebbe bene anche dentro solo la griglia dati.

Accidentaccio! non credevo che fare questa cosa fosse come scalare l'everest...


Ciao
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 08:50   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
MA che chiave primaria ha il DB ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 14:07   #9
Carmen
Senior Member
 
Iscritto dal: Jul 2001
Messaggi: 367
Ciao. La chiave primaria del DB e un campo dichiarato come (Contatore)...


Spero che la cosa non crei problemi, ma soprattutto che ci sia una soluzione....


Carmen
Carmen è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 16:17   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Appunto...se la chiave primaria è un contatore devi mettere un campo aggiuntivo per codificare l'ordine (come ho riportato sopra)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 17:31   #11
a2000
Bannato
 
L'Avatar di a2000
 
Iscritto dal: Jan 2001
Messaggi: 1976
certo che con sti' database siete messi come il ig:

ma possibile che non ci sia un comando:

Codice:
QuestoRecordQuiDeviMetterloLaaaaa iRec1, iRec2
:o :o


a2000 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 17:42   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Il problema è che essondoci una chiave primaria autoincrementante non si possono spostare così facilmente...

I record non sono ordinati...la chiave primaria autoincrementante serve solo per distinuguere un record dall'altro...ma non per dargli un ordine... Basarsi su questo per dargli un ordine si può anche fare, ma non è la cosa migliore...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 18:11   #13
a2000
Bannato
 
L'Avatar di a2000
 
Iscritto dal: Jan 2001
Messaggi: 1976
comunque un comando di spostamento FORZATO dei record ci deve/dovrebbe essere: che ca++o è il programmatore che comanda !

e poi non c'è di default (senza strutture-patch aggiuntive) una cazzabuffa di lista associata con cui fare ordina-sposta-inserisci-elimina senza necessità di spostare fisicamente un dato che sia uno !?

Ah cionci, se sti' dialetti di query li avessimo fatti noi due ..... !

Codice:
OhBischeroTeTuMeLoSpostiCodestoRecordInCodelloPosto iRec, iPos
a2000 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 18:14   #14
a2000
Bannato
 
L'Avatar di a2000
 
Iscritto dal: Jan 2001
Messaggi: 1976
comunque ragazzi, c'è della robina all' Iper ..... mmhhhhh ig: ig: ig:

al banco dei cmeri stavo per confondermi ! :ek:
a2000 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 18:17   #15
a2000
Bannato
 
L'Avatar di a2000
 
Iscritto dal: Jan 2001
Messaggi: 1976
oh, pardon, chiedo schiusa alle signr !
a2000 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 18:58   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Si può fare...ma bisogna fare due query...
Ad esempio hai 1000 record...che hanno una chiave primaria autoincrementante...

ID
1
.
.
.
1000

Essendo chiave per definizione non ci possono essere più di un record con un determinato valore di ID...

Se volessi mettere il 990 al posto del 3 potrei anche spostare tutti i record, ma non mi sembra una cosa fatta molto bene...

Basterebbero 3 query:

UPDATE Tabella
SET ID = ID+1
WHERE ID >= 3;

UPDATE Tabella
SET ID = 3
WHERE ID >= 991;

Purtroppo la prima query non è possibile farla perchè in un certo istante (dopo ogni singola modifica) esisteranno due record con la stessa chiave...
Quindi bisogna ricorrere a 3 query:

Se posso memorizzarmi i dati del record 990 a livello di programma posso fare così:

Mi memorizzo i dati nel programma e rimuovo il record 990:
DELETE FROM Tabella
WHERE ID = 990;

UPDATE Tabella
SET ID = ID+1
WHERE ID >= 3 AND ID <990;

Ed ora reinserisco i valori in tabella al posto 3:
INSERT INTO Tabella VALUES (3,....);

Se non potessi memorizzarmi i dati a livello di programma dovrei fare una cosa del genere:

UPDATE Tabella
SET ID = ID+1000
WHERE ID >= 3;

UPDATE Tabella
SET ID = 3
WHERE ID = 1990;

UPDATE Tabella
SET ID = ID-999
WHERE ID >= 1003;

Il problema è che una query che cambia degli indici è molto costosa per il DBMS...visto che deve ricreare le strutture per indici stessi...

In pratica si cerca sempre di minimizzare gli UPDATE che modificano gli indici della tabella...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 19:57   #17
a2000
Bannato
 
L'Avatar di a2000
 
Iscritto dal: Jan 2001
Messaggi: 1976
oh maremma bona,

ma è più facile swappare un co[/siz] !

a2000 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 20:05   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
UPDATE Tabella
SET ID = ID+1
WHERE ID >= 3;
Che testa...questo non lo posso fare sempre per il solito discorso della chiava primaria... Vabbè...comunque ci siamo capiti...

Comuqnue per swappare è facile...ripeto che qui si parla di dover inserire un record non al posto di un altro, ma sopra un altro...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 20:10   #19
a2000
Bannato
 
L'Avatar di a2000
 
Iscritto dal: Jan 2001
Messaggi: 1976
comunque datevi da fare: c'è del marcio in danibase !
a2000 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2003, 20:22   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "a2000"

comunque datevi da fare: c'è del marcio in danibase !
Più che altro è che i campi interi autoincrementanti nella teoria non si usano mai come chiave (creano ridondanza)...a quel punto mettere un'ordine crea meno promblemi...e si fa come dice tas...e con solo 2 query...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Microsoft stravolge l'app Sicurezza di W...
Mercato smartphone in caduta libera: -20...
Android 17 QPR3 Beta 3 riporta il blocco...
Le 10 offerte TOP in Amazon del weekend:...
Dyson, doppio crollo su Amazon: purifica...
Il 70% delle imprese non vede effetti de...
HillMiles MileCity1 a 616€: la city e-bi...
GAC Aion UT, prima prova: tanta roba a 2...
vivo X300 Pro a 979€: il top di gamma co...
AGIBOT fa ballare 110 Expedition A3 per ...
iPad A16 da 11'' scende a 459€ in tutti ...
Mac mini M6 crolla a 899€ (-180€ rispett...
Galaxy S27, la ricarica resta a 25W: lo ...
Claude Code, backdoor SSH: secondo Curso...
Il rumore delle 69 turbine è inso...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v