gibra ha scritto:
Invece di continuare a dire che non funziona (che equivale ad offendere i partecipanti alla discussione)
devi mostrare il codice che hai usato per eseguire le famose '6 tavolette' come ti è stato indicato, e gli eventuali messaggi di errore che hai ricevuto.
Lungi da me il pensiero di voler offendere qualcuno...
Trovo altrettanto "
insensato" il poter pensare che qualcuno si possa offendere per aver detto un paio di volte che il codice suggerito mi dava un errore di sintassi. Ma sono sicuro che questo è un mio "
limite"...
Comunque sono anni che manipolo le mie tabelle per aggiungere campi, variarne le caratteristiche, creare relazioni, ecc. ecc. Il tutto attraverso codice.
// ELIMINA INDICE --> Aggiornamento RC2.0830 (ID = 2)
// DB:DentaLabor TAB:TAB_Clienti FIELD:Intestazione2 TIPO:Testo
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Drop Index Intestazione2 on TAB_Clienti');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.0840 (ID = 3)
// DB:DentaLabor TAB:TAB_Servizio FIELD:V71 TIPO:Boolean
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Servizio Add Column V71 Bit');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.0910 (ID = 4)
// DB:DentaLabor TAB:TAB_Fascicoli FIELD:DataUpDate TIPO:Data
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Fascicoli Add Column DataUpDate Date');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO
// DB:DentaLabor TAB:TAB_Fascicoli FIELD:Ord TIPO:Numerico
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Fascicoli Add Column Ord Double Default 0');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO
// DB:DentaLabor TAB:TAB_DettaglioFascicoli FIELD:Ord TIPO:Numerico
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_DettaglioFascicoli Add Column Ord Double Default 0');
try Qy.ExecSQL except end;
// CREA TABELLA
// DB:DentaLabor TAB:TAB_DettaglioFasi
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Create Table TAB_DettaglioFasi(ID_DettaglioFase AutoIncrement Primary key,'
+ ' ID_Fase Integer Default 0 Not Null Unique,'
+ ' Descrizione Memo,'
+ ' Materiali Memo,'
+ ' Attrezzature Memo,'
+ ' Controlli Memo,'
+ ' Accettazione Memo )');
try Qy.ExecSQL except end;
// CREA RELAZIONE Uno-a-Uno
// DB:DentaLabor TAB_DettaglioFasi(ID_Fase) con TAB_Fasi(ID_Fase)
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_DettaglioFasi'
+ ' Add Constraint TAB_Fasi'
+ ' Foreign Key (ID_Fase)'
+ ' References TAB_Fasi (ID_Fase)'
+ ' On Delete Cascade');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1090 (ID = 5)
// DB:DentaLabor TAB:TAB_Laboratorio FIELD:Suspended TIPO:Numerico
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Laboratorio Add Column Suspended Integer Default 0');
try Qy.ExecSQL except end;
// Inserisce valore '0' nel campo Suspended precedentemente creato
TbLaboratorio.Close;
TbLaboratorio.Open;
TbLaboratorio.Edit;
TbLaboratorio['Suspended'] := 0;
TbLaboratorio.Post;
// ELIMINA RECORD --> Aggiornamento RC2.1100 (ID = 6)
// DB:DatiContabili TAB:TAB_Divisioni FIELD:Divisione VALUE:Cli/For
Qy.Connection := DatiContabili;
Qy.SQL.Clear;
Qy.SQL.Add('Delete From TAB_Divisioni Where ID_Divisione = 3');
try Qy.ExecSQL except end;
// AUMENTA DIMENSIONE CAMPO --> Aggiornamento RC2.1150 (ID = 7)
// DB:DentaLabor TAB:TAB_TestataFatture FIELD:IntestazioneCliente
Qy.Connection := DatiContabili;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_TestataFatture Alter Column IntestazioneCliente Varchar(100)');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1160 (ID = 8)
// DB:DentaLabor TAB:TAB_Lavori FIELD:DataInizio TIPO:Data/ora
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Lavori Add Column DataInizio DateTime,'
+ ' Column TimeInizio DateTime,'
+ ' Column NoteInizio Memo,'
+ ' Column AgInizio Bit,'
+ ' Column DataP1 DateTime,'
+ ' Column TimeP1 DateTime,'
+ ' Column NoteP1 Memo,'
+ ' Column AgP1 Bit,'
+ ' Column DataP2 DateTime,'
+ ' Column TimeP2 DateTime,'
+ ' Column NoteP2 Memo,'
+ ' Column AgP2 Bit,'
+ ' Column DataP3 DateTime,'
+ ' Column TimeP3 DateTime,'
+ ' Column NoteP3 Memo,'
+ ' Column AgP3 Bit,'
+ ' Column DataP4 DateTime,'
+ ' Column TimeP4 DateTime,'
+ ' Column NoteP4 Memo,'
+ ' Column AgP4 Bit,'
+ ' Column DataFine DateTime,'
+ ' Column TimeFine DateTime,'
+ ' Column NoteFine Memo,'
+ ' Column AgFine Bit');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1190 (ID = 9)
// DB:DentaLabor TAB:TAB_Laboratorio FIELD:ClickPrint01 TIPO:Numerico
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Laboratorio Add Column ClickPrint01 Integer Default 0');
try Qy.ExecSQL except end;
// Inserisce valore '0' nel campo ClickPrint01 precedentemente creato
TbLaboratorio.Close;
TbLaboratorio.Open;
TbLaboratorio.Edit;
TbLaboratorio['ClickPrint01'] := 0;
TbLaboratorio.Post;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1200 (ID = 10)
// DB:DentaLabor TAB:TAB_Servizio FIELD:V72 TIPO:Boolean
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Servizio Add Column V72 Bit');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1300 (ID = 11)
// DB:DentaLabor TAB:TAB_Laboratorio FIELD:PrintFirma TIPO:Boolean
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Laboratorio Add Column PrintFirma Bit');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1380 (ID = 12)
// DB:DentaLabor TAB:TAB_Clienti FIELD:MultiSede TIPO:Boolean
// DB:DentaLabor TAB:TAB_Clienti FIELD:MultiMedico TIPO:Boolean
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Clienti Add Column MultiSede Bit,'
+ ' Column MultiMedico Bit');
try Qy.ExecSQL except end;
// CREA TABELLA -->
// DB:DentaLabor TAB:TAB_Medici
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Create Table TAB_Medici(ID_Medico AutoIncrement Primary key,'
+ ' ID_Cliente Integer Default 0,'
+ ' TM_MedicoPrescrivente Text(50),'
+ ' TM_NumeroAlbo Text(50),'
+ ' TM_ProvinciaAlbo Text(50) )');
try Qy.ExecSQL except end;
// CREA TABELLA -->
// DB:DentaLabor TAB:TAB_Sedi
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Create Table TAB_Sedi(ID_Sede AutoIncrement Primary key,'
+ ' ID_Cliente Integer Default 0,'
+ ' Sede Text(50) )');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO -->
// DB:DentaLabor TAB:TAB_Lavori FIELD:Medico TIPO:Testo
// DB:DentaLabor TAB:TAB_Lavori FIELD:Sede TIPO:Testo
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Lavori Add Column Medico Text (50),'
+ ' Sede Text (50)');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO -->
// DB:DatiContabili TAB:TAB_RigoBolle FIELD:Medico TIPO:Testo
// DB:DatiContabili TAB:TAB_RigoBolle FIELD:Sede TIPO:Testo
Qy.Connection := DatiContabili;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_RigoBolle Add Column Medico Text (50),'
+ ' Sede Text (50)');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO -->
// DB:DatiServizio TAB:TAB_RigoFatturaLavori FIELD:Medico TIPO:Testo
// DB:DatiServizio TAB:TAB_RigoFatturaLavori FIELD:Sede TIPO:Testo
Qy.Connection := DatiServizio;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_RigoFatturaLavori Add Column Medico Text (50),'
+ ' Sede Text (50)');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1470 (ID = 13)
// DB:DentaLabor TAB:TAB_Laboratorio FIELD:SetLingua TIPO:Testo
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Laboratorio Add Column SetLingua Text (2) Not Null Default IT');
try Qy.ExecSQL except end;
// Inserisce valore 'IT' nel campo SetLingua precedentemente creato
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Update TAB_Laboratorio Set SetLingua = ''IT'' Where SetLingua = "" Or SetLingua Is Null');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO -->
// DB:DentaLabor TAB:TAB_Clienti FIELD:SetLingua TIPO:Testo
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Clienti Add Column SetLingua Text (2) Not Null Default IT');
try Qy.ExecSQL except end;
// Inserisce valore 'IT' nel campo SetLingua precedentemente creato
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Update TAB_Clienti Set SetLingua = ''IT'' Where SetLingua = "" Or SetLingua Is Null');
try Qy.ExecSQL except end;
// AUMENTA DIMENSIONE CAMPO --> Aggiornamento RC2.1560(ID = 14)
// DB:DentaLabor TAB:TAB_Laboratorio FIELD:PartitaIva
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Laboratorio Alter Column PartitaIva Varchar(20)');
try Qy.ExecSQL except end;
// AUMENTA DIMENSIONE CAMPO -->
// DB:DentaLabor TAB:TAB_Clienti FIELD:PartitaIva
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Clienti Alter Column PartitaIva Varchar(20)');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1650 (ID = 15)
// DB:DentaLabor TAB:TAB_Lavori FIELD:Consegnato TIPO:Boolean
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Lavori Add Column Consegnato Bit');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1700 (ID = 16)
// DB:DentaLabor TAB:TAB_Laboratorio FIELD:LastBackUp TIPO:Data
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Laboratorio Add Column LastBackUp Date');
try Qy.ExecSQL except end;
// Inserisce Data Sistema nel campo LastBackUp precedentemente creato
TbLaboratorio.Close;
TbLaboratorio.Open;
TbLaboratorio.Edit;
TbLaboratorio['LastBackUp'] := Date;
TbLaboratorio.Post;
// AGGIUNGE CAMPO --> Aggiornamento RC2.1740 (ID = 17)
// DB:DatiCartelle TAB:TAB_Schema FIELD:NoteCartella TIPO:Memo
Qy.Connection := DatiCartelle;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Schema Add Column NoteCartella Memo');
try Qy.ExecSQL except end;
// AGGIUNGE CAMPO -->
// DB:DentaLabor TAB:TAB_Servizio FIELD:V73-V74-V75-V76-V77-V78-V79-V80 TIPO:Boolean
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('Alter Table TAB_Servizio Add Column V73 Bit,'
+ ' V74 Bit,'
+ ' V75 Bit,'
+ ' V76 Bit,'
+ ' V77 Bit,'
+ ' V78 Bit,'
+ ' V79 Bit,'
+ ' V80 Bit');
try Qy.ExecSQL except end;
Per quanto riguarda il problema che mi si è presentato con il vincolo di CONSTRAINT ho seguito il suggerimento delle "6 tavolette", testando passo passo ma...
//1 Crea Campo d'appoggio
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('ALTER TABLE TAB_Clienti_dummy ADD Campo_dummy Integer Default 1');
Qy.ExecSQL;
//2 Copia valori originali
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('UPDATE TAB_Clienti_dummy SET Campo_dummy = SceltaListino');
Qy.ExecSQL;
//3 Elimina Campo originale
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('ALTER TABLE TAB_Clienti_dummy DROP COLUMN SceltaListino');
Qy.ExecSQL;
//4 Ricrea Campo originale con nuovo constraint
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('ALTER TABLE TAB_Clienti_dummy ADD SceltaListino CHECK (SceltaListino >=0 AND <15)');
Qy.ExecSQL;
//5 Copia valori da Campo d'appoggio
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('UPDATE TAB_Clienti_dummy SET SceltaListino = Campo_dummy');
Qy.ExecSQL;
//6 Elimina Campo d'appoggio
Qy.Connection := DatiDB;
Qy.SQL.Clear;
Qy.SQL.Add('ALTER TABLE TAB_Clienti_dummy DROP COLUMN Campo_dummy');
Qy.ExecSQL;
Qy.SQL.Add('ALTER TABLE TAB_Clienti_dummy ADD SceltaListino CHECK (SceltaListino >=0 AND <15)');
ERRORE DI SINTASSI