Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Quote Originariamente inviata da benjy Visualizza il messaggio
    Prima la vede, poi quando la si seleziona (parlo di access) per importarla o collegarla, dice che la tabella non esiste. Se vuoi (scusa il tu), posso inviarti il file, tanto, ho anche una versione demo sul quale non ci sono dati veri.
    Il "tu" non è un problema, anzi lo preferisco.

    Prova a caricare il database su qualche servizio di file storage, così è possibile dargli un'occhiata e fare qualche prova in autonomia.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  2. #12
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Quote Originariamente inviata da optime Visualizza il messaggio
    alcuni driver piuttosto antipatici sono case-sensitive: è questo il tuo caso?
    scusa... il dirver case-sensitive o il database?
    Da Vb, con la mia funzione, il nome lo vedo correttamente e come puoi vedere, anche nell'errore è riportato correttamente "TAnagrafiche", mentre da access, il nome lo vede correttamente, ma l'errore, più semplice rispetto a quello di vb, riporta semplicemente 'non trovata tabella TANAGRAFICA".

  3. #13
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Ho dato un'occhiata al file e ho provato ad aprirlo con uno dei tool che suggerivo.

    Ho individuato la famigerata tabella TAnagrafica, e visualizzandone la definizione (DDL) viene riportato quanto segue:

    codice:
    CREATE TABLE "TAnagrafica" (
      "IDAnagr" INTEGER NOT NULL,
      "CodAnagr" VARCHAR(50) CHARACTER SET WIN1252 COLLATE WIN1252_CI,
      "Nome" VARCHAR(255) CHARACTER SET WIN1252 NOT NULL COLLATE WIN1252_CI,
      "Indirizzo" VARCHAR(255) CHARACTER SET WIN1252 COLLATE WIN1252_CI,
      "Cap" VARCHAR(50) CHARACTER SET WIN1252 COLLATE WIN1252_CI,
      ...
    Quell'uso delle virgolette mi fa sospettare che il database faccia uso di un charset particolare e che quindi il tool rappresenti i nomi delle tabelle usando dei separatori per non creare ambiguità, se ci si collega usando CHARSET=NONE.

    Confermo che la query iniziale non funziona e restituisce l'errore della tabella non trovata, sebbene il nome sembri corrispondere, mentre (seguendo l'esempio sopra) questa invece funziona perfettamente (da notare la presenza delle virgolette):

    codice:
    SELECT * FROM "TAnagrafica"
    La query seguente invece, pur avendo le virgolette, non funziona (la tabella non viene trovata):

    codice:
    Select * from "TANAGRAFICA"
    Facendo qualche ricerca, ho scoperto quanto segue.

    In fase di creazione degli oggetti del DB (es. con il comando CREATE TABLE) è possibile indicare il nome "con" o "senza" virgolette.

    Quando viene indicato senza, il motore del DB mantiene il case utilizzato salvando il nome così come viene scritto, ma lo trasforma sempre in maiuscolo a ogni operazione in modo del tutto automatico, in breve rendendo i nomi degli oggetti case insensitive.

    Se invece si usano le virgolette, tale nome diventa "case sensitive": significa che va sempre specificato tra virgolette quando si fa riferimento a quell'oggetto in qualsiasi comando, e le maiuscole/minuscole devono necessariamente coincidere.

    In breve, l'uso delle virgolette fissa il criterio case sensitive sui nomi degli oggetti del DB interessati rendendoli tali e forzando il fatto che il case debba essere sempre rispettato usando le virgolette anche in seguito per riferirsi agli stessi oggetti.

    In conclusione, questo DB sembra essere stato creato con quest'ultima modalità, quindi devi ricordarti di aggiungere (se il tool di riferimento non lo fa) le virgolette nell'indicazione del nome di qualsiasi tabella, vista o qualsiasi oggetto che sta stato nominato inizialmente in questo modo, come vale per la tabella TAnagrafica.

    Fai qualche prova e aggiornarci quando hai novità.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #14
    Alka, vista la CREATE, immagino che anche le colonne a questo punto vadano sempre richieste con le virgolette, quindi qualcosa del tipo

    codice:
    SELECT "CodAnagr", "Nome" FROM "TAnagrafica" WHERE "IDAnagr"=....
    rispettando il case

  5. #15
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Quote Originariamente inviata da optime Visualizza il messaggio
    Alka, vista la CREATE, immagino che anche le colonne a questo punto vadano sempre richieste con le virgolette, quindi qualcosa del tipo

    codice:
    SELECT "CodAnagr", "Nome" FROM "TAnagrafica" WHERE "IDAnagr"=....
    rispettando il case
    Sì, tutti gli oggetti del DB vanno referenziati in questo modo, se è quello usato in fase di definizione.
    Per i campi, l'uso delle virgolette è visibile nell'estratto dello statement DDL di creazione della tabella che ho incluso nel messaggio precedente.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #16
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Buongiorno,
    ringrazio Alka per la sua riconosiuta competenza e conoscenze tecniche!

    Sono impegnato, ma ho potuto verificare il tutto, ma modificando la query con le virgolette, funge, i campi li vede tranquillamnete. Al momento non ho verificato la query con specifica dei campi, appena posso, sarà mia premura aggiornarVi.

  7. #17
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Quote Originariamente inviata da alka Visualizza il messaggio
    Sì, tutti gli oggetti del DB vanno referenziati in questo modo, se è quello usato in fase di definizione.
    Per i campi, l'uso delle virgolette è visibile nell'estratto dello statement DDL di creazione della tabella che ho incluso nel messaggio precedente.
    ... confermo, nelle query, ogni volta (select/order/group) va inserito fra virgolette.

  8. #18
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Bene, ringrazio Alka per lo studio fatto sulle caratteristiche tecniche del db.
    Confermo quindi che dopo aver racchiuso i riferimenti, sia di TABELLA che dei vari CAMPI, tra vigolette, il programma ha ricominciato a funzionare.
    Invece, tramite ODBC, via Access, continua a non funzionare in quanto non sono riuscito a trovare il punto dove andare ad inserire le virgolette nella definizione del diriver. Comunque, la cosa più importante era la procedura in VB.

    Grazie ancora, anche ad Optime.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.