CRIAR TABELAS COM ADO - COMO SETAR O NOME
Peguei um exemplo de como criar uma tabela uzando ADO
'open rs
Dim rsrap As ADODB.Recordset
Set rsrap = CreateObject("ADODB.Recordset")
'create fields
rsrap.fields.Append "field1", adInteger
rsrap.fields.Append "field2", adInteger
Só não sei como setar o nome da tabela
'open rs
Dim rsrap As ADODB.Recordset
Set rsrap = CreateObject("ADODB.Recordset")
'create fields
rsrap.fields.Append "field1", adInteger
rsrap.fields.Append "field2", adInteger
Só não sei como setar o nome da tabela
Este é um exemplo para criar uma tabela, numa base de dados access:
Sub CreateAccessTable(strDBPath As String)
Dim catDB As ADOX.Catalog
Dim tblNew As ADOX.Table
Set catDB = New ADOX.Catalog
' Open the Catalog object.
catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDBPath
Set tblNew = New ADOX.Table
' Create a new Table object.
With tblNew
.Name = "Contacts"
' Create fields and append them to the Columns
' collection of the new Table object.
With .Columns
.Append "FirstName", adVarWChar
.Append "LastName", adVarWChar
.Append "Phone", adVarWChar
.Append "Notes", adLongVarWChar
End With
End With
' Create the new table by adding the Table object
' to the Tables collection of the database.
catDB.Tables.Append tblNew
Set catDB = Nothing
End Sub
O que você está tentando criar parece-me uma recordset vazia.
Diferenças:
- a tabela fica gravada no banco de dados
- a recordset apenas fica gravada na memória
Se você quer mesmo criar uma recordset vazia, adapte este exemplo:
'Cria Recordset temporária para o Cabeçalho
Dim rstGuiaTemp as ADODB.Recordset
Set rstGuiaTemp = New ADODB.Recordset
With rstGuiaTemp
.Fields.Append "Coddist", adUnsignedBigInt
.Fields.Append "Dist", adVarChar, 60
.Fields.Append "Distmorada", adVarChar, 60
.Fields.Append "Distlocal", adVarChar, 60
.Fields.Append "Distcpost", adInteger
.Fields.Append "Distcpost1", adInteger
.Fields.Append "Distcpostdesig", adVarChar, 25
.Fields.Append "Disttel", adVarChar, 15
.Fields.Append "Distfax", adVarChar, 15
.Fields.Append "Coddest", adVarChar, 9
.Fields.Append "Dest", adVarChar, 60
.Fields.Append "Destmorada", adVarChar, 60
.Fields.Append "Destlocal", adVarChar, 60
.Fields.Append "Destcpost", adInteger
.Fields.Append "Destcpost1", adInteger
.Fields.Append "Destcpostdesig", adVarChar, 60
.Fields.Append "Destnumcontr", adUnsignedBigInt
.Fields.Append "Id_movimento", adVarChar, 10
.Fields.Append "Guia_num", adVarChar, 10
.Fields.Append "Data", adDate
.Fields.Append "Total", adUnsignedBigInt
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open
Se quer preenchê-la com dados de uma tabela:
'Preenche a Recordset para o Cabeçalho
strSql = "SELECT tMOVIMENTOS.codigo AS coddist,tMOVIMENTOS.ent_num AS coddest,"
strSql = strSql & "mid(tMOVIMENTOS.mov_docref, 5, 10) AS guia_num, "
strSql = strSql & "tMOVIMENTOS.mov_tipo, tMOVIMENTOS.id_movimento as id_movimento,"
strSql = strSql & "tMOVIMENTOS.data AS Data,sum(tMOVIMENTOSdet.valor) as total "
strSql = strSql & "FROM tMOVIMENTOS, tMOVIMENTOSdet "
strSql = strSql & "WHERE tMOVIMENTOS.codigo = tMOVIMENTOSdet.codigo "
strSql = strSql & "AND tMOVIMENTOS.id_movimento = tMOVIMENTOSdet.id_movimento "
strSql = strSql & "GROUP BY tMOVIMENTOS.codigo,tMOVIMENTOS.ent_num, mid(tMOVIMENTOS.mov_docref, 5, 10),"
strSql = strSql & "tMOVIMENTOS.mov_tipo , tMOVIMENTOS.id_movimento, tMOVIMENTOS.Data "
strSql = strSql & "HAVING (tMOVIMENTOS.codigo =" & cod & ") AND (tMOVIMENTOS.id_movimento = '" & id & "')"
strSql = strSql & " ORDER BY tMOVIMENTOS.id_movimento, tMOVIMENTOS.codigo "
Set rstGuiaSelect = New ADODB.Recordset
rstGuiaSelect.CursorLocation = adUseClient
rstGuiaSelect.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText
Do While Not rstGuiaSelect.EOF
rstGuiaTemp.AddNew
rstGuiaTemp("Coddist") = rstGuiaSelect("codDist")
rstGuiaTemp("Coddest") = rstGuiaSelect("codDest")
rstGuiaTemp("Id_movimento") = rstGuiaSelect("Id_movimento")
rstGuiaTemp("Guia_num") = rstGuiaSelect("Guia_num")
rstGuiaTemp("Data") = rstGuiaSelect("Data")
rstGuiaTemp("Total") = rstGuiaSelect("Total")
rstGuiaTemp.Update
rstGuiaSelect.MoveNext
Loop
Set rstGuiaSelect = Nothing
Espero ter ajudado a que, pelo menos, as coisas tenham ficado um pouco mais claras.
Sub CreateAccessTable(strDBPath As String)
Dim catDB As ADOX.Catalog
Dim tblNew As ADOX.Table
Set catDB = New ADOX.Catalog
' Open the Catalog object.
catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDBPath
Set tblNew = New ADOX.Table
' Create a new Table object.
With tblNew
.Name = "Contacts"
' Create fields and append them to the Columns
' collection of the new Table object.
With .Columns
.Append "FirstName", adVarWChar
.Append "LastName", adVarWChar
.Append "Phone", adVarWChar
.Append "Notes", adLongVarWChar
End With
End With
' Create the new table by adding the Table object
' to the Tables collection of the database.
catDB.Tables.Append tblNew
Set catDB = Nothing
End Sub
O que você está tentando criar parece-me uma recordset vazia.
Diferenças:
- a tabela fica gravada no banco de dados
- a recordset apenas fica gravada na memória
Se você quer mesmo criar uma recordset vazia, adapte este exemplo:
'Cria Recordset temporária para o Cabeçalho
Dim rstGuiaTemp as ADODB.Recordset
Set rstGuiaTemp = New ADODB.Recordset
With rstGuiaTemp
.Fields.Append "Coddist", adUnsignedBigInt
.Fields.Append "Dist", adVarChar, 60
.Fields.Append "Distmorada", adVarChar, 60
.Fields.Append "Distlocal", adVarChar, 60
.Fields.Append "Distcpost", adInteger
.Fields.Append "Distcpost1", adInteger
.Fields.Append "Distcpostdesig", adVarChar, 25
.Fields.Append "Disttel", adVarChar, 15
.Fields.Append "Distfax", adVarChar, 15
.Fields.Append "Coddest", adVarChar, 9
.Fields.Append "Dest", adVarChar, 60
.Fields.Append "Destmorada", adVarChar, 60
.Fields.Append "Destlocal", adVarChar, 60
.Fields.Append "Destcpost", adInteger
.Fields.Append "Destcpost1", adInteger
.Fields.Append "Destcpostdesig", adVarChar, 60
.Fields.Append "Destnumcontr", adUnsignedBigInt
.Fields.Append "Id_movimento", adVarChar, 10
.Fields.Append "Guia_num", adVarChar, 10
.Fields.Append "Data", adDate
.Fields.Append "Total", adUnsignedBigInt
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open
Se quer preenchê-la com dados de uma tabela:
'Preenche a Recordset para o Cabeçalho
strSql = "SELECT tMOVIMENTOS.codigo AS coddist,tMOVIMENTOS.ent_num AS coddest,"
strSql = strSql & "mid(tMOVIMENTOS.mov_docref, 5, 10) AS guia_num, "
strSql = strSql & "tMOVIMENTOS.mov_tipo, tMOVIMENTOS.id_movimento as id_movimento,"
strSql = strSql & "tMOVIMENTOS.data AS Data,sum(tMOVIMENTOSdet.valor) as total "
strSql = strSql & "FROM tMOVIMENTOS, tMOVIMENTOSdet "
strSql = strSql & "WHERE tMOVIMENTOS.codigo = tMOVIMENTOSdet.codigo "
strSql = strSql & "AND tMOVIMENTOS.id_movimento = tMOVIMENTOSdet.id_movimento "
strSql = strSql & "GROUP BY tMOVIMENTOS.codigo,tMOVIMENTOS.ent_num, mid(tMOVIMENTOS.mov_docref, 5, 10),"
strSql = strSql & "tMOVIMENTOS.mov_tipo , tMOVIMENTOS.id_movimento, tMOVIMENTOS.Data "
strSql = strSql & "HAVING (tMOVIMENTOS.codigo =" & cod & ") AND (tMOVIMENTOS.id_movimento = '" & id & "')"
strSql = strSql & " ORDER BY tMOVIMENTOS.id_movimento, tMOVIMENTOS.codigo "
Set rstGuiaSelect = New ADODB.Recordset
rstGuiaSelect.CursorLocation = adUseClient
rstGuiaSelect.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText
Do While Not rstGuiaSelect.EOF
rstGuiaTemp.AddNew
rstGuiaTemp("Coddist") = rstGuiaSelect("codDist")
rstGuiaTemp("Coddest") = rstGuiaSelect("codDest")
rstGuiaTemp("Id_movimento") = rstGuiaSelect("Id_movimento")
rstGuiaTemp("Guia_num") = rstGuiaSelect("Guia_num")
rstGuiaTemp("Data") = rstGuiaSelect("Data")
rstGuiaTemp("Total") = rstGuiaSelect("Total")
rstGuiaTemp.Update
rstGuiaSelect.MoveNext
Loop
Set rstGuiaSelect = Nothing
Espero ter ajudado a que, pelo menos, as coisas tenham ficado um pouco mais claras.
Tópico encerrado , respostas não são mais permitidas