USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  _ Tabela desconectada
wilKs
ITABORAÍ
RJ - BRASIL
Postada em 30/06/2004 10:14 hs            
   Olá!
   Abri a Tabela1 de um Arquivo.mdb, e criei a Tabela2 "virtual" (ou seja, sem gravá-la em algum arquivo).
   Preciso saber como faço para copiar o conteúdo da Tabela1 dentro da Tabela2, sem que as alterações que eu fizer no conteúdo da Tabela2, alterem o conteúdo da Tabela1. Pois este comando não deixa a Tabela2 independente:
   Set Tabela2.DataSource = Tabela1
 
   A quem puder ajudar, grato.
TÓPICO EDITADO
   
X-Crow Original
Pontos: 2843
VITÓRIA
ES - BRASIL
Postada em 30/06/2004 13:36 hs         
Wilks, mesmo que você tente não irá conseguir usando recordsets pois, Eles herdam a definição da tabela ao qual ele foi gerado.
Se vc alterar um registro ou adicionar o mesmo direto no recordset resultante de uma consulta (Ex.:"SELECT * FROM Tabela") mesmo não sendo a tabela propriamente dita isso irá ocorrer. O que voce pode fazer é declarar um tipo definido(Type...End Type)
E jogar cada registro(Dentro do Type vc declara as váriáveis e seus respectivos tipos) e gravar dentro de um array, dinâmico ou não, e após isso usar um loop para incluir esses dados à sua tabela.
Bem espero ter ajudado, Abraços, Sidnei
Espero
     
wilKs
ITABORAÍ
RJ - BRASIL
Postada em 30/06/2004 15:30 hs            
   X-Crow, valeu a força!!
   Mas é difícil acreditar que não exista nenhum comando ou meio predefinido de se copiar uma tabela, sem criar dependência entre elas...
     
X-Crow Original
Pontos: 2843
VITÓRIA
ES - BRASIL
ENUNCIADA !
Postada em 30/06/2004 17:57 hs         
É possível criar sim mas vc teria de criar outra tabela para isso. Uma tabela temporária entende? Aí sim funcionaria... Mas vc teria de usar drop table toda vez com isso.
Bem qualquer coisa tamos ae... Abraços, Sidnei
   
Mateus
AMADORA
PT - PORTUGAL
Postada em 01/07/2004 11:49 hs            
Para quê tabelas temporárias se se pode usar recordsets, que apenas ocupam... memória.

Eis um exemplo:

'Cria Recordset temporária para o Cabeçalho da Guia

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

'Preenche a Recordset para o Cabeçalho da Guia

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
    
'actualiza o cabeçalho com os Dados do Distribuidor

Do While Not rstGuiaTemp.EOF
rstGuiaTemp.MoveMin

cod = CLng(rstGuiaTemp("CodDist"))

strSql = "SELECT tENTIDADES.ent_num,tENTIDADES.ent_num_contr as Distnumcontr, tENTIDADES.ent_nome AS dist,tENTIDADES.ent_morada AS distmorada,"
strSql = strSql & "tENTIDADES.ent_local AS distlocal,tENTIDADES.cpos_codig AS distcpost,"
strSql = strSql & "tENTIDADES.cpost_desig AS distcpostdesig, tENTIDADES.cpos_codig1 AS distcpost1,"
strSql = strSql & "tENTIDADES.ent_tel AS disttel, tENTIDADES.ent_fax AS distfax "
strSql = strSql & "FROM tENTIDADES "
strSql = strSql & "WHERE tENTIDADES.ent_num = " & cod & " "
strSql = strSql & "GROUP BY tENTIDADES.ent_num,tENTIDADES.ent_num_contr,tENTIDADES.ent_nome, tENTIDADES.ent_morada, tENTIDADES.ent_local,"
strSql = strSql & "tENTIDADES.cpos_codig, tENTIDADES.cpost_desig,"
strSql = strSql & "tENTIDADES.cpos_codig1, tENTIDADES.ent_tel,tENTIDADES.ent_fax "

Set rstEntidadesTemp = New ADODB.Recordset
rstEntidadesTemp.Open strSql, dbEntidades, adOpenKeyset, adLockReadOnly, adCmdText


    rstGuiaTemp("Dist") = rstEntidadesTemp("Dist")
    rstGuiaTemp("Distmorada") = rstEntidadesTemp("Distmorada")
    rstGuiaTemp("Distlocal") = rstEntidadesTemp("Distlocal")
    rstGuiaTemp("Distcpost") = rstEntidadesTemp("Distcpost")
    rstGuiaTemp("Distcpost1") = rstEntidadesTemp("Distcpost1")
    rstGuiaTemp("Distcpostdesig") = rstEntidadesTemp("Distcpostdesig")
    rstGuiaTemp("Disttel") = IIf(rstEntidadesTemp("Disttel") > " ", rstEntidadesTemp("Disttel"), 0)
    rstGuiaTemp("Distfax") = IIf(rstEntidadesTemp("Distfax") > "", rstEntidadesTemp("Distfax"), 0)

rstGuiaTemp.Update
rstGuiaTemp.MoveNext
Set rstEntidadesTemp = Nothing
Loop

'actualiza o cabeçalho com os dados do Destinatário

rstGuiaTemp.MoveMin

Do While Not rstGuiaTemp.EOF

cod = CLng(rstGuiaTemp("Coddest"))

strSql = "SELECT  tENTIDADES.ent_num_contr as Destnumcontr,tENTIDADES.ent_nome AS dest,tENTIDADES.ent_morada AS destmorada, "
strSql = strSql & "tENTIDADES.ent_local AS destlocal, tENTIDADES.cpos_codig AS destcpost,"
strSql = strSql & "tENTIDADES.cpos_codig1 AS destcpost1, tENTIDADES.cpost_desig AS destcpostdesig "
strSql = strSql & "FROM tENTIDADES "
strSql = strSql & "WHERE tENTIDADES.ent_num =" & cod & " "
strSql = strSql & "GROUP BY tENTIDADES.ent_num_contr,tENTIDADES.ent_nome, tENTIDADES.ent_morada,"
strSql = strSql & "tENTIDADES.ent_local, tENTIDADES.cpos_codig, "
strSql = strSql & "tENTIDADES.cpos_codig1, tENTIDADES.cpost_desig "


Set rstEntidadesTemp = New ADODB.Recordset
rstEntidadesTemp.Open strSql, dbEntidades, adOpenKeyset, adLockReadOnly, adCmdText

    rstGuiaTemp("Dest") = rstEntidadesTemp("Dest")
    rstGuiaTemp("Destnumcontr") = rstEntidadesTemp("Destnumcontr")
    rstGuiaTemp("Destmorada") = rstEntidadesTemp("Destmorada")
    rstGuiaTemp("Destlocal") = rstEntidadesTemp("Destlocal")
    rstGuiaTemp("Destcpost") = rstEntidadesTemp("Destcpost")
    rstGuiaTemp("Destcpost1") = rstEntidadesTemp("Destcpost1")
    rstGuiaTemp("Destcpostdesig") = rstEntidadesTemp("Destcpostdesig")
    

rstGuiaTemp.Update
rstGuiaTemp.MoveNext
Set rstEntidadesTemp = Nothing
Loop


End With
 
É claro que os dados a transitar para a recordset serão apenas os existentes no momento da sua criação.
Também é claro que pode fazer com uma recordset tudo o que faz com uma tabela(bem... quase tudo)

Espero que ajude




João Mateus
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página