Newsgroup: it.comp.software.database
Titolo: Problema inspiegabile INTERBASE-BDE-DELPHI

Salve a tutti,
sto smanettando con Delphi5 e Interbase e sto già alle prime
difficoltà:) Ieri ho fatto le 3, stanotte forse ripetero' l'impresa.
Ho dato uno sguardo su google groups ma a quanto pare non c'è niente
che somiglia al mio problema, quindi credo di avere poche
speranze...di sicuro non è un bug, magari sbaglio io qualcosa, pero'
spero non sia qualche strana configurazione di librerie o XP Pro
faccia i capricci con il suo NTFS:(
Allora:
1)Delphi 5
2)Interbase ultima versione 6.5
3)EMS QuickDesk ultima versione, download ieri notte
Creo facilmente un database con due tabelle tramite EMS, importando i
dati da un CVS (esportando i dati precedentemente da MySQL).
Le tabelle sono visibili, i dati anche.
Registro il db in BDE, tutto a posto.
Creo una semplice applicazione di prova con Delphi 5, con un modulo
contenente le tabelle ed i datasource, ed un form con due dbgrid
collegati a questi datasource. Anche a design time, in Delphi è
possibile vedere le tabelle con i dati, selezionando True nella
proprietà Active della Tabella. 
Quando faccio questa operazione, viene restituito un errore: Table
doesn't exists!!
Cosa stranissima, poiché le tabelle sono viste da Delphi (quando
seleziono il database a cui collegare la tabella, devo selezionare
anche la tabella del db appena selezionato).
A questo punto provo con altri tool.
EMS abbiamo detto che funziona.
In BDE Manager non si vedono le tabelle.
In IBConsole funziona tutto alla perfezione...vedo le tabelle ed i
dati!!!
Con SQLExplorer, un tool che viene con Delphi, vedo il database con le
tabelle, compresa la struttura, ma quando cerco di visualizzare i dati
al suo interno l'errore è sempre lo stesso: Table doesn't exists!!!!!
Esorcizzo?
--
Ambrogio disse, riguardo a certe idee di software pirata ed al mio invito ad usare altri os:
"Quale sarebbe? Il linux? Quel coso dove 3000 programmi non funzionano?"

al suo interno l'errore č sempre lo stesso: Table doesn't exists!!!!!
--
Oggi ho fatto una scoperta, ho trovato un computer...
The MentoR

difficoltà:) Ieri ho fatto le 3, stanotte forse ripetero' l'impresa.
Non usare il BDE è una palla al piede e vedrai che andrai a dormire prima.
Usa semplicemente le IBX.
jk
--
Jilani Khaldi
http://space.tin.it/scuola/jkhaldi


Ciao jilani,
forse ho letto qualche tuo articolo su Linux&Company proprio riguardo
ad Interbase:)
Cmq,
per IBX intendi le librerie in Delphi per accedere a database e
tabelle IB? Quando ho installato IB6.5 ho eseguito anche
l'aggiornamento per Delphi 5 di queste librerie.
Il problema è l'errore Table doesn't exists, che forse non dipende da
BDE. Come faccio a non passare per BDE? IBX non fa riferimento al
database registrato tramite BDE?
In sostanza, come si usano le IBX!??!?!!?!??!!??!!?!?:)
Puoi indicarmi un link per un tutorial, anche in inglese, che illustri
i passi necessari per un'applicazione Delphi/IB tramite le IBX?
Grazie Mille!


In sostanza, come si usano le IBX!??!?!!?!??!!??!!?!?:)
E' un po' lungo ma... va bene ;-)
1. crea un progetto nuovo (File -> New Application)
2. operazioni da eseguire:
2.1. appicica sulla form: 
  - un bottone;
  - un TIBDatabase e chiamalo Database, un TIBTransaction e chiamo Transaction e
un TIBSQL e chiamolo QTemp;
- un campo Memo e chiamolo memo1
2.2. setta le seguenti proprietà di Database: 
  - DatabaseName: il nome del database compreso di percorso (esempio:
c:\ibase\employee.gdb oppure \\192.168.1.2\c:\ibase\employee.gdb per un server
NT, o ancora  //192.168.1.1:/ibase/employee.gdb per un server Unix (si capisce
?)
- DefaultTransaction: Transaction
- LoginPrompt: false (fai un duppio click sul  componente Database e setta user
name: sysdba; password: masterkey.
2.3. setta le seguenti proprietà per il componente Transaction:
- Active: false;
- DefaultDatabase: Database.
2.4.  setta le seguenti proprietà per il componente QTemp:
- Database: Database;
Transaction: Transaction.
Ora assoccia al click del bottone il seguente codice:
procedure TForm1.Button1Click(Sender: TObject);
var
  st: string;
begin
  st := 'select * from employee';
  try
    QTemp.Close;
    QTemp.SQL.clear;
    QTemp.SQL.Add(st);
    Transaction.Active;
    Transaction.StartTransaction;
    QTemp.ExecQuery;
  except
    ShowMessage('Errore nella selezione dei dati!');
    Transaction.RollBack;
    exit;
  end;
  memo1.Clear;
  while not QTemp.Eof do
  begin
    st := QTemp.Fields[0].AsString;
    memo1.Lines.Add(st);
    st := QTemp.Fields[1].AsString;
    memo1.Lines.Add(st);
    st := QTemp.Fields[2].AsString;
    memo1.Lines.Add(st);
    memo1.Lines.Add('------------------------------------');
    QTemp.Next;
  end;
  Transaction.Commit;
end;
Tutto qui.
E' un prototipo di una vera applicazione c/s 2-tier imbattibile per prestazioni.
Infatti non sono state usate le usuali palle al piede: TDBGrid, TTable,
TIBQuery, cetrioline, maionese...
Per avere le massime prestazioni usa come output TRichMemo, TMemo e TStringGrid
e null'altro altrimenti avrai un'applicazione lenta ed ingombrante.
Per distribuirla basta solo copiare il file gds32.dll in c:\windows\system (o da
qualche altra parte) una sola volta per tutte le applicazioni che richiedono
InterBase/Firebird come server e la tua applicazione.
jk
ps.
devi avere InterBae/Firbird girare come server


2. operazioni da eseguire:
Ti sono infinitamente grato!:)
Il tutorial dovrebbe andare bene. Domani faccio delle prove e se avro'
problemi...ti chiamero' sul NG:))
Alla proxima!
