Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303

    [VB.NET]Verificare se una tabella esiste

    ciao,
    1)vi chiedo se esiste un modo per verificare l' esistenza di una tabella all' interno di un db.sdf?

    2)Poi non capisco il perchè se eseguo:

    codice:
    Dim create, create1 As String
                Dim eng As SqlCeEngine
                eng = New SqlCeEngine("Data Source=" + db)
                eng.CreateDatabase()
                create = "CREATE TABLE ore(Giorno nvarchar(20) PRIMARY KEY not null,Causale nvarchar(20) not null,Entrata nvarchar(30) not null,Uscita nvarchar(30) not null,Totale nvarchar(30) not null)"
                ExecSql(create)
                create1 = ("CREATE TABLE ferie(Data nvarchar(20) PRIMARY KEY not null,Giorni nvarchar(20) not null,Altro nvarchar(30) not null,Rimanenza nvarchar(30) not null,Residuo nvarchar(30) not null)")
                ExecSql(create1)
                            Me.Close()
    Mi vengono create le due tabelle, ma se invece ne volessi creare 3
    codice:

    codice:
    Dim create, create1, create2 As String
                Dim eng As SqlCeEngine
                eng = New SqlCeEngine("Data Source=" + db)
                eng.CreateDatabase()
                create = "CREATE TABLE ore(Giorno nvarchar(20) PRIMARY KEY not null,Causale nvarchar(100) not null,Entrata nvarchar(30) not null,Uscita nvarchar(30) not null,Totale nvarchar(30) not null)"
                ExecSql(create)
                create1 = ("CREATE TABLE ferie(Data nvarchar(20) PRIMARY KEY not null,Giorni nvarchar(20) not null,Altro nvarchar(30) not null,Rimanenza nvarchar(30) not null,Residuo nvarchar(30) not null)")
                ExecSql(create1)
                create2 = "CREATE TABLE riepilogo(Congedo nvarchar(20) PRIMARY KEY not null,Malattia nvarchar(100) not null,P.r nvarchar(30) not null,104 nvarchar(30) not null,Malattia nvarchar(30) not null)"
                ExecSql(create2)
                Me.Close()
    di queste me ne vengono create sempre 2, perchè?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Semplicemente perche' utilizzi dei nomi di campi non consentiti ...

    Non puoi utilizzare un campo che si chiama

    104

    perche' 104 e' un numero!

    Semmai chiamalo L104 ...

    Lo stesso per P.r .... evita i punti nei nomi dei campi e chiamalo

    Pr

    Per ultimo, anche se non e' importante, non e' necessario usare piu' variabili ... ne basta una sola

    codice:
      create = "CREATE TABLE ore(Giorno nvarchar(20) PRIMARY KEY not null,Causale nvarchar(100) not null,Entrata nvarchar(30) not null,Uscita nvarchar(30) not null,Totale nvarchar(30) not null)"
      ExecSql(create)
      create = "CREATE TABLE ferie(Data nvarchar(20) PRIMARY KEY not null,Giorni nvarchar(20) not null,Altro nvarchar(30) not null,Rimanenza nvarchar(30) not null,Residuo nvarchar(30) not null)"
      ExecSql(create)
      create = "CREATE TABLE riepilogo(Congedo nvarchar(20) PRIMARY KEY not null,Malattia nvarchar(100) not null, Pr nvarchar(30) not null, L104 nvarchar(30) not null,Malattia nvarchar(30) not null)"
      ExecSql(create)

  3. #3
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    buongiorno oregon,
    purtroppo non cambia nulla!

    codice:
    Dim create As String
                Dim eng As SqlCeEngine
                eng = New SqlCeEngine("Data Source=" + db)
                eng.CreateDatabase()
                create = "CREATE TABLE ore(Giorno nvarchar(20) PRIMARY KEY not null,Causale nvarchar(20) not null,Entrata nvarchar(30) not null,Uscita nvarchar(30) not null,Totale nvarchar(30) not null)"
                ExecSql(create)
                create = ("CREATE TABLE ferie(Data nvarchar(20) PRIMARY KEY not null,Giorni nvarchar(20) not null,Altro nvarchar(30) not null,Rimanenza nvarchar(30) not null,Residuo nvarchar(30) not null)")
                ExecSql(create)
                create = "CREATE TABLE riepilogo(Congedo nvarchar(20) PRIMARY KEY not null,Malattia nvarchar(100) not null,Pr nvarchar(30) not null,L104 nvarchar(30) not null,Malattia nvarchar(30) not null)"
                ExecSql(create)
                Me.Close()
    sono sempre 2

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Rileggendo molto attentamente l'ultima frase SQL (cosa che avresti dovuto fare), ho visto che hai specificato due volte lo stesso campo Malattia ...

  5. #5
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    ok scoperto l' arcano!
    codice:
    create = "CREATE TABLE riepilogo(Congedo nvarchar(20) PRIMARY KEY not null,Malattia nvarchar(100) not null , Pr nvarchar(30) not null, L104 nvarchar(30) not null,Malattia nvarchar(30) not null )"
      ExecSql(create)

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Infatti ... te lo avevo detto ...

    Devi fare un po' piu' attenzione ... sono quasi sempre disattenzioni ...

    Le tabelle si progettano "sulla carta" ... si scrivono i campi e il loro scopo ... e non si sbaglia.

    Per esempio, non capisco come non ci sia neanche un campo numerico ma siano tutte stringhe di caratteri .... sei sicuro? Potresti avere problemi dopo ... imposta *correttamente* ora le tabelle ...

  7. #7
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    allora per quanto riguarda la tabella ore la lascio così come lo esposta, invece ho modificato le altre due:

    codice:
     create = "CREATE TABLE riep(Cong numeric PRIMARY KEY not null,H numeric not null,Pr numeric not null,L104 numeric not null)"
                ExecSql(create)
                create = "CREATE TABLE ore(Giorno nvarchar(20) PRIMARY KEY not null,Causale nvarchar(20) not null,Entrata nvarchar(30) not null,Uscita nvarchar(30) not null,Totale nvarchar(20) not null)"
                ExecSql(create)
                create = ("CREATE TABLE ferie(Data nvarchar(20) PRIMARY KEY not null,Giorni numeric not null,Altro nvarchar(30) not null,Rimanenza numeric not null,Residuo numeric not null)")
                ExecSql(create)
    ho ancora da chiedere una cosa, ma se volessi effettuare la somma di ferie, per sapere quante ferie sono state usufruite come posso fare?

    l' istruzione dovrebbe essere:

    codice:
     ExecSql("SELECT SUM Giorni FROM ferie")
    ma il risultato come lo visualizzo?

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Originariamente inviato da x69asterix
    ho ancora da chiedere una cosa, ma se volessi effettuare la somma di ferie, per sapere quante ferie sono state usufruite come posso fare?
    Sì, ma il titolo del thread è Verificare se una tabella esiste... ciascuna discussione deve essere dedicata ad una domanda, di cui il titolo reca una descrizione possibilmente significativa.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

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 © 2025 vBulletin Solutions, Inc. All rights reserved.