Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: gianpa - Dicembre 29, 2012, 05:36:40 pm

Titolo: creare tabella con flameRobin
Inserito da: gianpa - Dicembre 29, 2012, 05:36:40 pm
seguo passo-passo la guida per creare un nuovo database ,ma mi ritorna questo errore :
Message: isc_dsql_execute2 failed

SQL Message : -607
This operation is not defined for system tables.

Engine Code    : 335544351
Engine Message :
unsuccessful metadata update
Table SUPPLIER already exists

come mai?
faccio ancora fatica ad entrare con la testa in questo nuovo(per me)
modus operandi!
grazie e ciao
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Dicembre 29, 2012, 07:05:52 pm
Prova ad usare nomi in italiano, difficile che vadano in conflitto con cose preesistenti.
Prova a fare il refresh, magari la tabella esiste già. Se devi modificarla, devi usare altri comandi.
1) Alter Table
2) Drop Table+Create Table.

La prima premette di modificare le tabelle, ma a me non piace molto la sintassi.
La seconda, su tabelle vuote è più "intuitiva". Elimina la tabella (dati compresi) e la ricrei con una nuova struttura.
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Dicembre 30, 2012, 09:49:05 am
Farò come dici !!!
e ti ringrazio per la risposta!

Ciao
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Dicembre 30, 2012, 02:38:27 pm
Ho provato ad usare la tabella creata con flamerobin con gli script riportati sopra e per capire se faceva al caso mio ,ho provato ad utilizzarla !
il file ha estensione FDB ed ho provato mettendo sulla form un controllo Tdbf ; va bene? credo di no visto che se provo a caricare i campi in un dbedit ,alla proprietà dbField non mi mostra nulla da selezionare!

Devo mettere un controllo diverso o ho sbagliato tutto?

ciao
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Dicembre 30, 2012, 02:53:29 pm
Come hai intuito la strada che hai preso è sbagliata.
TDBF serve per i file DBF non quelli firebird o altri relazionali.

Controlla il Tab (componenti Lazarus, in alto) SQLdb.
Cerca il connettore per firebird sql e aggancia quello con gli stessi dati che hai dato a Flame Robin.
Dopo usa i componenti TSQLQuery e agganciali al connettore tramite la property connection.
I componenti TDBF sono equivalenti (o quasi) ai componenti TSQLQuery.
Poi dovresti utilizzare i TDataSource per "pubblicare" i dati presso i vari componenti di editing.
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Dicembre 30, 2012, 05:37:13 pm
ho aggiunto unSQLconnettor ,ma nella proprietà databasename non c'è lo sfoglia ; così ho scritto il nome del file ma senza la certezza che lo vada a pigliare e in effetti quando metto un SQLquery e lo aggancio al datasource non mi appaiono i campi della mia tabella !?!?

ora non vorrei tediare,ma non esiste una guida da potersi studiare senza rompere troppo gli amici del forum ?
così chiedo solo nel caso di inghippi e non per ogni passo !

intanto...GRAZIE!
Titolo: Re:creare tabella con flameRobin
Inserito da: bonmario - Dicembre 30, 2012, 06:26:27 pm
Ecco la guida !!!
http://wiki.lazarus.freepascal.org/firebird

Ciao, Mario
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Dicembre 30, 2012, 06:52:50 pm
grazie !!!!!!!!!!!

ho trovato anche quì in italiano:
http://www.firebirdsql.org/manual/it/qsg2-it.html

ma rimanda a mille possibilità ... eh eh
per capire è sempre il massimo costruirsi un proprio esempio da quello che si capisce e poi ... approfondire!

CIAOOOOOOOOOOO
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Dicembre 30, 2012, 07:22:53 pm
L'importante è iniziare e non fermarsi alle prime difficoltà.
Google è preziosissimo per gli informatici ;)
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Dicembre 31, 2012, 10:00:39 am
seguo le varie guide ma quando cerco di creare una tabella all'interno del mio database mi dà sempre errore:
Starting transaction...
Preparing query: CREATE TABLE Ricarica
(
    Tipologie VARCHAR(20) NOT NULL PRIMARY KEY,
    CoPalle float(10) NOT NULL,
    palle DECIMAL(7,2) NOT NULL,
   
)
Error: *** IBPP::SQLException ***
Context: Statement::Prepare( CREATE TABLE Ricarica
(
    Tipologie VARCHAR(20) NOT NULL PRIMARY KEY,
    CoPalle float(10) NOT NULL,
    palle DECIMAL(7,2) NOT NULL,
   
) )
Message: isc_dsql_prepare failed

SQL Message : -104
Invalid token

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 7, column 1
)


Total execution time: 0.031s
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Dicembre 31, 2012, 10:10:50 am
con questa prova non mi dà errore ,ma non mi crea nemmeno la tabella!!! :

Starting transaction...
Preparing query: CREATE TABLE prova
(
    tipo VARCHAR(10) NOT NULL PRIMARY KEY,
    nome VARCHAR(20) NOT NULL
)
Prepare time: 0.031s
Plan not available.


Executing...
Done.
324 fetches, 75 marks, 2 reads, 3 writes.
17 inserts, 2 updates, 0 deletes, 21 index, 0 seq.
Delta memory: 15164 bytes.
RDB$FIELDS: 2 inserts.
RDB$INDEX_SEGMENTS: 1 inserts.
RDB$INDICES: 1 inserts.
RDB$RELATION_FIELDS: 2 inserts.
RDB$RELATIONS: 1 inserts. 2 updates.
RDB$USER_PRIVILEGES: 5 inserts.
RDB$RELATION_CONSTRAINTS: 3 inserts.
RDB$CHECK_CONSTRAINTS: 2 inserts.
Total execution time: 0.047s
Script execution finished.
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Dicembre 31, 2012, 03:01:33 pm
Devi dire al motore che le modifiche sono state fatte tutte.
Usa il comando "commit;"
Dopo dovresti avere la tabella pronta da usare.
(Piccola postilla, il commit devi darlo nello stesso script, anche se inizia a fare Insert. Firebird SQL fa distinzione tra DDL e DML. Non condividono la stessa transazione).
Titolo: Re:creare tabella con flameRobin
Inserito da: nomorelogic - Dicembre 31, 2012, 04:15:58 pm
postilla alla postilla
con FlameRobin, dopo che hai eseguito un qualsiasi script senza errori, si abilitano in automatico 2 bottoni, rispettivamente commit (così lo puoi dare manuale) e rollback (che non annulla lo script).

Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Dicembre 31, 2012, 05:27:32 pm
grazie ai tuoi aiuti sono riuscito a creare alcune tabelle di prova quando lo desidero ,ma se provo a definire dei miei campi i dà sempre l'errore: SQL Message : -104
Invalid token

e non capisco cosa non aggrada al compilatore in quanto modifico proprio di pochissimo il codice e inoltre non viene evidenziata la riga od il comando errato !
ad esempio:
CREATE TABLE Patients
(
   PatientID    int,
   FirstName    varchar(50) NOT NULL,
   LastName    varchar(50),
   Telephone   varchar(12),
   Email      varchar(50),
   Address    varchar(100),
   Gender       char,
 
   PRIMARY KEY(PatientID)
);
 ciaoOOOOOOO
Titolo: Re:creare tabella con flameRobin
Inserito da: nomorelogic - Dicembre 31, 2012, 05:37:28 pm
prova così:

Codice: [Seleziona]
CREATE TABLE Patients (
   PatientID    int NOT NULL,   -- questo campo è la pk => not null è obbligatorio
   FirstName    varchar(50) NOT NULL,
   LastName    varchar(50),
   Telephone   varchar(12),
   Email      varchar(50),
   Address    varchar(100),
   Gender       char(1)     -- credo manchi la specifica della lunghezza
[...]
);
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Dicembre 31, 2012, 05:39:24 pm
Bastava
Codice: [Seleziona]
constraint (nome constraint) primary key (campi);
Ma vado a memoria ....
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Gennaio 01, 2013, 03:18:51 pm
Sì , grazie , finalmente !

ora l'unico problema che ho è capire come connettere con lazarus!
ho provato ma non riesco facendo come col BDE o con ADO in Delphi!
ho messo il datasource che ho capito che serve ancora ,ma quale componente è corretto per linkare la tabella creata ???

ciao
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Gennaio 01, 2013, 03:33:27 pm
Come ti avevo già indicato qualche post fa:
Tab -> SQLdb
Componente -> TIBConnection (imposti i dati di connessione, grosso modo gli stessi di flamerobin).
Componente -> TSQLQuery.
Componente -> TDataSource

I TSQLQuery devono essere associati ai TIBConnection.
I TDataSource devono essere associati ai TSQLQuery.

Dentro i TSQLQuery metti le Select che ti interessano.
Le TTable alle quali sei abituato, mettono una query implicita in esecuzione "SELECT * FROM {table_name}".
Stilgar
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Gennaio 01, 2013, 04:03:25 pm
Grazie!
ti auguro un BUON 2013 !!!

ciao
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Gennaio 01, 2013, 05:12:23 pm
Ho fatto come dici ,senza alcun problema , ma quando voglio abbinare i campi della tabella ad un DbEdit (per esempio) non li trovo sfogliando in
DataField !


ciao
Titolo: Re:creare tabella con flameRobin
Inserito da: nomorelogic - Gennaio 01, 2013, 05:17:33 pm
prima devi creare i campi nel datasource
apri la tabella e con il doppio click lancia il field editor
una volta creati nel datasource li puoi abbinare nei db controls
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Gennaio 01, 2013, 06:07:15 pm
come ???
ma i campi li ho già editati con flameRobin !!!
se clicco su datasource mi apre l'editor nella unit della form !!!
non capisco ?!?!
con delphi il datasource era un semplice passaggio(collegamento) per cambiare in una volta tutti gli abbinamenti della tabella ,bastava solo associarne il nome ... ora invece che scopo ha ???

Ho provato comunque ,ma mi vedo un po' spiazzato ... non riesco ... a capire la procedura ...mah

comunque siete davvero pazienti e vi ringrazio!
ciao
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Gennaio 01, 2013, 10:09:05 pm
Allora, se metti a manella il nome del campo, non hai bisogno di fare nessuna cosa in particolare.
Se vuoi avere tutto "automatico" e a livello di design il giro è un attimo più .. laborioso.
1) Attivi la connessione (altrimenti come potrebbe vedere le cose? Con il TDBF lo faceva in automatico, senza che tu te ne rendessi conto. Leggeva l'intestazione del file e caricava in modo silenzioso la info).
2) Clicchi sul tuo componente dei dati (TSQLQuery). "Edita Campi" a premi sul "+" che compare in alto. Dopo di chè aggiungi tutti (o solo quelli che ti interessano) i nomi che compaiono nella finestrella

A questo punto hai reso disponibile al designer le informazioni che cercavi.

Appena prendi pratica e mano nel procedura, diventerà una cosa scontata e lo spiegherai tu ai prossimi che lo chiedono ;) :p
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Gennaio 02, 2013, 10:45:49 am
Adesso mi dice "unable to open file PROVA" ; prima non lo diceva , si vede che ho modificato qualcosa !
"c'è qualQUADRA che non COSA"

ma , in filename della sqlQuery che nome devo mettere:
1) il nome della tabella (relativo) ?
2) il nome del database creato da flameRobin ?
3) il percorso completo di uno dei due ?

ciao
Titolo: Re:creare tabella con flameRobin
Inserito da: nomorelogic - Gennaio 02, 2013, 11:18:41 am
in filename non ci devi mettere niente: ricorda che qua non siamo in un sistema dove "1 tabella = 1 file"

nella proprietà SQL devi mettere la frase sql per la richiesta dei dati e cioè: "select * from nometabella"
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Gennaio 02, 2013, 05:36:21 pm
Grazie MILLE !!!! tutto OK !

ciao e grazie
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Gennaio 02, 2013, 07:27:51 pm
perchè il tutto funzioni ho dovuto aggiungere un componente transaction che non ho ben caito a cosa serve !!!
Però se lo tolgo iniziano i problemi !!!
l'ho aggiunto perchè era indicato in un esempio , ma quì non ne avevamo mai parlato, mi pare!

farò qualche prova anche se ora volendo sostituire alla tabella prova una tabella diversa creata ad hoc mi dice che non la trova ,ma l'ho creata all'interno dello stesso file con gli stessi criteri !
ora ritento .....ciaoOOOOO
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Gennaio 02, 2013, 08:30:49 pm
ok, può essere che questi componenti non usino le transazioni implicite.
Non li ho mai usati direttamente ho solo letto qualche cosa su come usarli, poi mi sono caricato ZeosLib e non ci ho più pensato ;)
Titolo: Re:creare tabella con flameRobin
Inserito da: nomorelogic - Gennaio 02, 2013, 11:23:59 pm
ok, può essere che questi componenti non usino le transazioni implicite.

in effetti è proprio così, con i componenti SqlDb la transazione è un componente obbligatorio a parte
con zeos la transazione è incapsulata nelle classi
Titolo: Re:creare tabella con flameRobin
Inserito da: Stilgar - Gennaio 03, 2013, 10:15:15 am
Diciamo che mi rifacevo alle vecchie connessioni in Delphi.
Potevi usare una tua o quella implicita della connessione. ;)
Titolo: Re:creare tabella con flameRobin
Inserito da: gianpa - Gennaio 03, 2013, 04:08:29 pm
mi ero costruito un po' di esempi salvando i progetti in cartelle e/o con nomi diversi come facevo in delphi !
In lazarus è un casino :i progetti sono vuoti e devo aprire unit per associarle al momento!
mi trovo con progetti che mescolano form diverse (non volute) e che non funzionano più !
Mi stà passando la voglia di passare a Lazarus!
Dopo tutto il lavoro per capire e scrivere un po' di applicazione con i database mi trovo a dover riscrivere tutto da capo !

Ciao