Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    CLASSE: createtable v1.1 (MDB e MYSQL)

    SPERIMENTALE
    questa versione è passabile di modifiche fino al raggiungimento della più stabile 1.2
    se avete piacere di testarla, potrete consigliarmi

    la prima versione la trovate qui:
    http://forum.html.it/forum/showthrea...hreadid=873561

    come è già spiegato di la, questa classe serve a creare facilmente tabelle tramite codice senza doversi preoccupare che vadano su un DB mysql o mdb.

    ---

    le novità di questa minorversion sono comunque consistenti

    permettono infatti di creare campi indicizzati (index) e relazioni (foreign key)

    non è molto personalizzata (per questo maneggiatevela un minimo), in pratica crea relazioni semplici (uno-a-molti, senza constraint) e indicizzazioni (singole o multicampo, duplicati ammessi)

    ---

    la classe la trovate qui
    http://www.imente.it/freesoftware/cr...atetable11.zip

    ---

    come usare la classe

    esempio completo
    codice:
    <%
    
    'FUNZIONE DI ESECUZIONE QUERY
    'al posto di CONN utilizzate il vostro oggetto di connessione, attenzione che sia già stata aperta prima (conn.open...)
    sub execsql(sqlstring)
    
    	on error resume next
    	dim tmpsql,tmpi
    	tmpsql = split(sqlstring,";")
    	for tmpi = 0 to ubound(tmpsql)
    	if tmpsql(tmpi) <> "" then conn.execute tmpsql(tmpi)
    	if err <> 0 then response.write tmpsql(tmpi) &"
    ": response.write err.description: response.end
    	next
    
    end sub
    
    'creo un'istanza della classe
    dim obj
    set obj = new splik_createtable
    obj.database = "mdb" 'oppure "mysql"
    
    '***creo una tabella
    
    'imposto i campi
    call obj.clear()
    call obj.addField("id",				"counter",		"")
    call obj.addField("nome",			"varchar",		"100")
    call obj.addField("cittaid",			"long",		"")
    
    'imposto gli indici (anche più di uno)
    'L'INDICE SUL CAMPO COUNTER E' IMPOSTATO AUTONOMAMENTE
    call obj.addIndex("cittaid","cittaid")
    
    'genero la query e la eseguo
    call execsql(obj.createtable("impiegati"))
    
    '***creo una tabella
    
    'imposto i campi
    call obj.clear()
    call obj.addField("id",				"counter",		"")
    call obj.addField("nomecitta",			"varchar",		"100")
    
    'genero la query e la eseguo
    call execsql(obj.createtable("citta"))
    
    '***creo le relazioni
    'aggiungerle con addkey, e poi eseguirle
    call obj.clear()
    call obj.addKey("nomerelazione","impiegati","cittaid","citta(id)")
    'obj.addKey...
    call execsql(obj.createconstraint())
    
    'distruggo l'oggetto
    set obj = nothing
    
    '---
    
    'infine volendo si possono popolare le tabelle
    'SQL = "INSERT INTO........"
    'conn.execute SQL
    %>
    ---

    se avete esigenze particolari, ditelo
    può essere utile ampliare la classe

    la prossima versione avrà un minimo di personalizzazione nella costruzione delle relazioni (e nei duplicati per gli indici)

    ---

    WARNING
    in MDB le relazioni sono quasi sempre funzionanti
    in MYSQL invece le relazioni devono essere rigorose.
    fate attenzione che i campi che mettete in relazione, siano di tipo compatibile (preferibilmente STESSO tipo), che siano entrambi NOT NULL oppure "NULL" (accettino valori null) e che siano entrambi (nel caso numerico) UNSIGNED o "SIGNED" (con segno)

    ---

    se avete domande fate pure.
    se la cosa vi è assoltuamente ostica e non capite il senso di questo lavoro, mandatemi un PM che vi spiego.

    saluti
    san imente saluta

    * http://simonecingano.it *

  2. #2
    FUNZIONI DELLA CLASSE
    -------------------

    obj.clear()
    svuota il buffer attuale
    è necessario dopo ogni esecuzione delle SQL preparate

    obj.addField(nomecampo,tipo,dimensioni)
    aggiunge un campo al buffer
    nomecampo = il nome del campo
    tipo = tipologia (vedi tabella in fondo al post)
    dimensioni = dimensioni per i char o i numerici in Mysql

    obj.addIndex(nomeindice,campi)
    aggiunge un indice alla tabella (da eseguire PRIMA di creare la tabella DOPO la definizione dei campi)
    nomeindice = il nome dell'indice (per indici a singolo campo si usa il nome del campo)
    campi= può essere un singolo campo della tabella, oppure più campi divisi da VIRGOLA

    obj.createtable(nometabella)
    utilizza i campi e gli indici aggiunti in buffer e crea l'SQL da eseguire per fare una tabella

    -------------------

    obj.addKey(nomerelazione,tabella,campo,foreign)
    nomerelazione = un nome (in MYSQL viene definito autonomamente)
    tabella = tabella in cui creare la relazione
    campo = campo da cui iniziare la relazione
    foreign = tabella e campo/i a cui indirizzare la relazione ( indicare nometabella apertaparentesi nomecampi divisi da virgola, o singolo campo, e poi chiusaparentesi)

    es foreign: nometabella(campo1,campo2,campo3)

    obj.createconstraint()
    crea la SQL per la definizione delle relazioni (si fa sempre DOPO aver creato tutte le tabelle della relazione.
    genera una SQL, da eseguire

    -------------------

    TIPI DI CAMPO:
    counter
    MDB: counter | MYSQL: int auto_incremenent

    date
    MDB: datetime | MYSQL: datetime

    byte
    MDB: byte | MYSQL: tinyint

    short
    MDB: short | MYSQL: smallint

    long
    MDB: long | MYSQL: int

    currency
    MDB: currency | MYSQL: bigint

    char
    MDB: text(x) | MYSQL: char(x)

    varchar
    MDB: text(x) | MYSQL: varchar(x)

    memo
    MDB: memo | MYSQL: longtext
    san imente saluta

    * http://simonecingano.it *

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    Ciao Imente,

    mi puoi postare per favore il codice per aggingere 3 campi di testo in una tabella già esistente in mysql ?

    i campi da aggiungere sono :

    nome (35)

    cognome (40)

    paese (30)


    grazie mille !

    ciao
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  4. #4
    questa classe NON è fatta per aggiungere...

    ma per poter creare EX NOVO

    se vuoi aggiungere dei campi cerca

    ALTER TABLE

    in google o html.it
    troverai subito la tua risposta
    san imente saluta

    * http://simonecingano.it *

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    grazie !
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  6. #6
    Originariamente inviato da unreg
    grazie !
    è un grazie sarcastico?

    se è così me ne dispiaccio e sarò lieto di aiutarti se apri un nuovo topic

    se invece hai risolto sono contento
    san imente saluta

    * http://simonecingano.it *

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    no, è un grazie di cuore

    ho cercato con google in tutte le maniere (aggiungere un campo con asp a mysql, nuovo campo in mysql ecc..) ricerca fatta in vano, tu mi ai sugerito la giusta key, e ho trovato la soluzione al mio problema grazie a te.

    ciao
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

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.