Fórum Criar campos dinamicamente - Access #332576
02/11/2006
0
Caros amigos, já pesquisei aqui no forum e não encontrei uma solução para o meu problema.
Queria que quando o meu programa fosse atualizado, o programa verifica-se o banco de dados antigo (toda vez tenho que trocar o banco de dados) e se preciso fosse cria-se os campos novos automaticamente. Eu uso banco de dados access, queria fazer isto usando ado sql é possivel?
Vocês poderiam me mostrar um exemplo ou me indicar onde tem um?
obrigado pela a atenção.
Queria que quando o meu programa fosse atualizado, o programa verifica-se o banco de dados antigo (toda vez tenho que trocar o banco de dados) e se preciso fosse cria-se os campos novos automaticamente. Eu uso banco de dados access, queria fazer isto usando ado sql é possivel?
Vocês poderiam me mostrar um exemplo ou me indicar onde tem um?
obrigado pela a atenção.
Ranyeryfip
Curtir tópico
+ 0
Responder
Posts
02/11/2006
Paulocesar1301
esse código me ajudou uma vez ...
... é só trabalhá-lo um pouco.
Abraços e Bons Códigos :wink:
... é só trabalhá-lo um pouco.
[b]Uses , ADOInt, ComObj, ADODB[/b] [b]procedure[/b] CriandoTabelaAccess; [b]var[/b] Catalog : Variant; Table : Variant; Field : Variant; Key : Variant; Index : Variant; BaseName : String; ConnStr : String; [b]begin[/b] BaseName := ´c:\windows\desktop\demo.mdb´; Catalog := CreateOLEObject(´ADOX.Catalog´); // Cria o banco de dados MDB compative com Access 97 (type=4). Access 2000=Type 5 ConnStr := ´Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=4;Data Source=´+BaseName; If FileExists(BaseName) Then DeleteFile(BaseName); Catalog.Create(ConnStr); // Cria a tabela Table := CreateOLEObject(´ADOX.Table´); Table.Name := ´Clientes´; Catalog.Tables.Append(Table); // Primeiro Metodo para criacao de campos Field := CreateOLEObject(´ADOX.Column´); Field.ParentCatalog := Catalog; Field.Name := ´Codigo´; Field.Type := adInteger; Field.Properties[´Nullable´].Value := false; Field.Properties[´Description´].Value := ´Este é o campo da chave primária´; Field.Properties[´AutoIncrement´].Value := true; Table.Columns.Append(Field); // Cria a chave Primária para o campo Codigo Key := CreateOLEObject(´ADOX.Key´); Key.Name := ´PrimaryKey´; Key.Type := 1; //adKeyPrimary Key.Columns.Append(´Codigo´); Table.Keys.Append(Key); // Segundo Metodo para criacao de campos Table.Columns.Append(´Nome´ , adVarWChar, 50); // Veja a relacao de tipos de campos no arquivo ADOInt.pas do Delphi // Cria outro indice para a tabela Table.Keys.Append(´Nome´,3,´Nome´); // Mais colunas Table.Columns.Append(´Email´ , adVarWChar, 70); Table.Columns.Append(´Cidade´ , adVarWChar, 40); Table.Columns.Append(´Bairro´ , adVarWChar, 30); // Adiciona o estado com validação Field := CreateOLEObject(´ADOX.Column´); Field.ParentCatalog := Catalog; Field.Name Field.ParentCatalog := Catalog; Field.Name := ´Codigo´; Field.Type := adInteger; Field.Properties[´Nullable´].Value := false; Field.Properties[´Description´].Value := ´Este é o campo da chave primária´; Field.Properties[´AutoIncrement´].Value := true; Table.Columns.Append(Field); // Cria a chave Primária para o campo Codigo Key := CreateOLEObject(´ADOX.Key´); Key.Name := ´PrimaryKey´; Key.Type := 1; //adKeyPrimary Key.Columns.Append(´Codigo´); Table.Keys.Append(Key); // Segundo Metodo para criacao de campos Table.Columns.Append(´Nome´ , adVarWChar, 50); // Veja a relacao de tipos de campos no arquivo ADOInt.pas do Delphi // Cria outro indice para a tabela Table.Keys.Append(´Nome´,3,´Nome´); // Mais colunas Table.Columns.Append(´Email´ , adVarWChar, 70); Table.Columns.Append(´Cidade´ , adVarWChar, 40); Table.Columns.Append(´Bairro´ , adVarWChar, 30); // Adiciona o estado com validação Field := CreateOLEObject(´ADOX.Column´); Field.ParentCatalog := Catalog; Field.Name := ´Estado´; Field.Type := adVarWChar; Field.DefinedSize := 2; Field.Properties[´Nullable´].Value := False; Field.Properties[´Description´].Value := ´Campo de Estado´; Field.Properties[´Jet OLEDB:Allow Zero Length´].Value := True; Field.Properties[´Default´].Value := ´MG´; Field.Properties[´Jet OLEDB:Column Validation Rule´].Value := ´<>""´; Field.Properties[´Jet OLEDB:Column Validation Text´].Value := ´Por favor preencha o campo CIDADE´; Table.Columns.Append(Field); // Cria um Indice Composto Index := CreateOLEObject(´ADOX.Index´); Index.Name := ´BairroCidade´; Index.Columns.Append(´Bairro´); Index.Columns.Append(´Cidade´); Index.IndexNulls := 1; //adIndexNullsDisallow Table.Indexes.Append(Index,EmptyParam); Catalog := Unassigned; Table := Unassigned; Field := Unassigned; Key := Unassigned; Index := Unassigned; [b]end;[/b]
Abraços e Bons Códigos :wink:
Responder
Gostei + 0
02/11/2006
Ranyeryfip
[b:4f0b23649d]paulocesar1301[/b:4f0b23649d] muito obrigado pela a ajuda.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)