Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: sandrobello - Settembre 15, 2014, 11:12:43 am

Titolo: DBLookupComboBox1
Inserito da: sandrobello - Settembre 15, 2014, 11:12:43 am
sapete dirmi come si fa a collegare 2 tabelle padre e figlio e trasportare dati come ragione sociale e indirizzo contemporaneamente
grazie
Titolo: Re:DBLookupComboBox1
Inserito da: xinyiman - Settembre 15, 2014, 11:14:47 am
Spiegati meglio
Titolo: Re:DBLookupComboBox1
Inserito da: sandrobello - Settembre 15, 2014, 11:43:22 am
come si collegano 2 tabelle con DBLookupComboBox
Titolo: Re:DBLookupComboBox1
Inserito da: xinyiman - Settembre 15, 2014, 11:50:49 am
Devi giocare con le seguenti proprietà

DataSource: datasource che contiene la query alla tabella principale
DataField: campo che deve essere modificato nella tabella principale

ListSource:datasource che contiene la query alla tabella che contiene la lista dei valori da far comparire nella combobox
ListField: valori che vedi nella combobox

KeyField: chiave che va a modificare il valore contenuto nella colonna identificata con DataField

Spero di essere stato d'aiuto
Titolo: Re:DBLookupComboBox1
Inserito da: sandrobello - Settembre 15, 2014, 12:02:54 pm
pero mi trasporta solo un campo,  per piu campi come si fà
Titolo: Re:DBLookupComboBox1
Inserito da: xinyiman - Settembre 15, 2014, 12:21:16 pm
Non si può fare per ora. Ma c'è un barbatruccio, nella query esegui una concatenazione di più campi e gli assegni un nome, la concatenazione cambia da dbms a dbms. Su firebird ad esempio mi sembra sia una cosa del tipo:

select campochiave, campo1, campo2, (campo1 || campo2) as miaconcatenazione from tabella;
Titolo: Re:DBLookupComboBox1
Inserito da: sandrobello - Settembre 15, 2014, 12:25:24 pm
adesso ci provo grazie
Titolo: Re:DBLookupComboBox1
Inserito da: xinyiman - Settembre 15, 2014, 12:50:29 pm
figurati
Titolo: Re:DBLookupComboBox1
Inserito da: sandrobello - Settembre 17, 2014, 02:33:56 pm
Firebird sapete quale database devo utilizzare
grazie
Titolo: Re:DBLookupComboBox1
Inserito da: xinyiman - Settembre 18, 2014, 03:52:12 pm
Non capisco la domanda
Titolo: Re:DBLookupComboBox1
Inserito da: sandrobello - Settembre 19, 2014, 08:35:38 pm
select campochiave, campo1, campo2, (campo1 || campo2) as miaconcatenazione from tabella;
come funziona in parole povere
grazie
Titolo: Re:DBLookupComboBox1
Inserito da: nomorelogic - Settembre 20, 2014, 01:47:43 pm
Il toekn '||' è il simbolo che devi usare per concatenare 2 campi di tipo stringa.
Su MsSql ad esempio si usa il più '+'.

L'esempio che ti ha fatto xiniyman è già pronto all'uso: sostituisci il nome della tabella e dei campi con qualcosa che esiste nel tuo DB e la select già funziona.

In particolare
(campo1 || campo2) as miaconcatenazione

è come se in pascal scrivessi:
miaconcatenazione := campo1 + campo2;
Titolo: Re:DBLookupComboBox1
Inserito da: sandrobello - Settembre 20, 2014, 05:01:43 pm
cosa si intende x miaconcatenazione
grazie
Titolo: Re:DBLookupComboBox1
Inserito da: xinyiman - Settembre 20, 2014, 05:59:56 pm
cosa si intende x miaconcatenazione
grazie
è il nome che io ho dato ai campi concatenati. curiosita conosci il linguaggio sql?
Titolo: Re:DBLookupComboBox1
Inserito da: sandrobello - Settembre 20, 2014, 07:33:24 pm
Allora il mio problema è questo:se ho 1 tabella clienti e una tabella ddt come faccio a trasportare tutti i dati della tabella clienti nella tabella ddt con DBLookupComboBox ?
Titolo: Re:DBLookupComboBox1
Inserito da: nomorelogic - Settembre 20, 2014, 07:40:44 pm
Allora il mio problema è questo:se ho 1 tabella clienti e una tabella ddt come faccio a trasportare tutti i dati della tabella clienti nella tabella ddt con DBLookupComboBox ?

sandrobello, aiutaci ad aiutarti...
definisci "trasportare" ;)
Titolo: Re:DBLookupComboBox1
Inserito da: Stilgar - Settembre 23, 2014, 01:43:38 am
così a sentimento:
Codice: [Seleziona]
insert into clienti (campi da inserire)
select (campi da selezionare)
from ddt
where "campo in lookupkey" = "valore in lookupkey"
Così di getto.

Poi è da capire cosa devi copiare dentro la tabella clienti.
L'indirizzo?

Ma ora ti faccio una domandina io ;)
Se il cliente ha un indirizzo di consegna diversa dalla sede legale dove deve andare la fattura?

A sentimento hai bisogno di più entità.
1) Anagrafe Clienti
2) Indirizzario (collegato ai clienti)
3) Documenti di Trasporto
4) Dettaglio del documento di trasporto.
( aggiungiamo una 5 entità? tanto per avere un'anagrafe delle cose che sono pronte a magazzino? Lasciando perdere le tabelle/entità che servono alla gestione produzione, in modo da gestire i carichi e gli scarichi semplici del magazzino stesso? Se vuoi gestire la produzione le tabelle aumentano parecchio... e con rapporto m:n)
Mi sembra che in questo modo si possa essere un attimino più "liberi".

Poi ti serviranno 2 lookup per popolare la 3 entità al posto di una.
1) Per la ragione sociale del cliente.
2) Per l'indirizzo di spedizione.

La seconda lookup prende i dati dal filtro applicato in funzione della prima lookup.
In questo modo eviti di "pastrocchiare" i dati visibili nelle lookup.
Spero di averti dato qualche spunto di riflessione.

(L'appetito vien mangiando, per l'indirizzario, una bella tabella con i comuni d'italia e i relativi cap?, poi c'è da incasinarsi la vita con tutti i cap legati alle vie delle città grossette, penso a Milano o Roma. Si hanno cap solo per i quartieri... una goduria)

Stilgar
Titolo: Re:DBLookupComboBox1
Inserito da: sandrobello - Dicembre 10, 2014, 06:15:18 am
cosi  si fa per popolare 4 entità
grazie