Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
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


Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Lo compri una volta, lo giochi dove vuoi...
Qiantinuum annuncia Helios, "il com...
Samsung Galaxy S26 Ultra: una sola novit...
Google prepara Gemini 3 Pro e Nano Banan...
TVS non è solo moto e scooter: ec...
Alexa+ arriva su BMW: gli automobilisti ...
Gemini Deep Research arriva su Google Fi...
Rinvii a catena, Marvel 1943: Rise of Hy...
Xiaomi inaugura uno spazio dedicato ai f...
Rilasciate le specifiche di Bluetooth 6....
L'obiettivo che mette tutto a fuoco: la ...
Meta avrebbe raccolto fino al 10% dei ri...
NVIDIA DGX Spark e videogiochi? Una pess...
Serie Oppo Reno15 confermata: arriva il ...
UPDF 2025: l'editor PDF che fa (quasi) t...
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: 20:02.


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