domingo, 29 de julho de 2007

Reiniciar Campo auto-numerador

[Exemplo]

Por muito tempo, procurei em Fóruns, sites, livros uma forma de reinicar um capo auto-numerador.

Hoje, admito que dificilmente usaria, pois, geralmente oculto essa informação.

Mas está aí.

Colaboração de Luiz Cláudio C. V. Rocha, no Fórum MSDN.

------------------------------------------------------------
Function ChangeSeed(strTbl As String, strCol As String, lngSeed As Long) As Boolean
'You must pass the following variables to this function.
'strTbl = Table containing autonumber field
'strCol = Name of the autonumber field
'lngSeed = Long integer value you want to use for next AutoNumber.

Dim cnn As ADODB.Connection
Dim cat As New ADOX.Catalog
Dim col As ADOX.Column

'Set connection and catalog to current database.
Set cnn = CurrentProject.Connection
cat.ActiveConnection = cnn

Set col = cat.Tables(strTbl).Columns(strCol)
col.Properties("Seed") = lngSeed

cat.Tables(strTbl).Columns.Refresh

If col.Properties("seed") = lngSeed Then
ChangeSeed = True
Else
ChangeSeed = False
End If

Set col = Nothing
Set cat = Nothing
Set cnn = Nothing

End Function
------------------------------------------------------------
Assinale a biblioteca Microsoft ADO Ext. for DDL and Security.

Add-In - Customizando tempo

Ao conhecermos novas ferramentas de trabalho, vemos que algumas melhorias são significativas.

Meu primeiro contato com o VSTO foi muito confuso, pois, sempre trabalhei com MS Access e senti algumas dificuldades, ainda estou estudando a ferramenta.

Uma dentre centenas de facilidades é a indentação automática do código. No entando, descobri duas ferramentas que, hoje em dia não consigo trabalhar sem elas.

[Smart Indenter]: Responsável por Indentar meu código, um simples Ctrl + M, indenta o módulo todo, vale a pena instalar.

[MZ-Tools] - Dentre muitas funcionabilidades, como armazenar templates de códigos, revisão (encontra, por exemplo, variáveis declaradas e não utilizadas), nenhuma delas me ajuda tanto quanto o tratamento de erros automaticamente. Antes deste Add-In, perdia tempo escrevendo o tratamento de erros, hoje basta um clique ou um um [Ctrl + Alt + E] (Minha tecla de atalho para tratar Erros.

Com certeza, após a instalação destes Add-In, vocês não conseguirão trabalhar sem eles.

Atachando Arquivos como Binários

Exemplo

Por diversas vezes precisei montar templates de documentos (.doc, .xls, .html ou arquivo de imagem) para exportar dados, porém, sempre precisava salvar o documento em um local padrão e em algumas vezes havia o problema do usuário apagar, alterar nome, dentre outros problemas.

Então resolvi, anexar os documentos em um campo OLE e anexa-los no bando de dados.

Este procedimento é aconselhavel quando vamos atachar apenas templates, ou seja, poucos documentos. Seria inviável anexar fotos de produtos, por exemplo, para um cadastro de estoque.

Segue a função:

**** Importando o arquivo para banco de dados
----------------------------------------------------------
Public Sub ImportFile(FileName As String, Dest As field)
'Parâmetros: FileName = Nome, extensão e caminho completo do Arquivo
' Dest = Campo Tipo Ole que será armarezado o arquivo (obtenha através de uma RecordSet.

On Error GoTo ImportFile_Err

Dim buf

Open FileName For Binary As #1
buf = Input(LOF(1), 1)
Close #1

Dest.Value = Null
Dest.AppendChunk buf
Exit Sub


ImportFile_Err:
MsgBox Err.Description , vbExclamation + vbOKOnly, "Application Error"
Resume Next

End Sub
----------------------------------------------------------
**** Exportando para caminho específico

Public Sub DumpFile(OutFileName As String, FileData)

On Error GoTo DumpFile_Err

Open OutFileName For Output As #1
Print #1, FileData
Close #1
Exit Sub

DumpFile_Err:
MsgBox Err.Description, vbExclamation + vbOKOnly, "Application Error"
Resume Next
End Sub

----------------------------------------------------------
Criei um exemplo para vocês: