PROBLEMAS COM O SHOW CREATE TABLE

ALVAROVB2009 08/05/2012 10:44:48
#401526
Galera bom dia, tenho um módulo de backup porém esta dando um erro ao pegar a estrutura de uma tabela com vários campos, porém qdo coloco isso direto no banco MYSQL ele traz a estrutura certinha
NO VB a resposta fica assim

CREATE TABLE 'empresas' (
'EMPRESA' double default NULL,
'CGC' varchar(14) default NULL,
'NOME' varchar(48) default NULL,
'ENDERECO' varchar(30) default NULL,
'NUMERO' varchar(5) default NULL,
'COMPLEM' varchar(16) default NULL,
'CEP' varchar(8) default NULL,
'BAIRRO' varchar(16) default NULL,
'CIDADE' varchar(28) default N


E no MYSQL
CREATE TABLE 'empresas' (
'EMPRESA' double default NULL,
'CGC' varchar(14) default NULL,
'NOME' varchar(48) default NULL,
'ENDERECO' varchar(30) default NULL,
'NUMERO' varchar(5) default NULL,
'COMPLEM' varchar(16) default NULL,
'CEP' varchar(8) default NULL,
'BAIRRO' varchar(16) default NULL,
'CIDADE' varchar(28) default NULL,
'ESTADO' varchar(2) default NULL,
'SETOR' varchar(1) default NULL,
'STATUS' varchar(1) default NULL,
'CONTABIL' double default NULL,
'NRFUNC' double default NULL,
'DTCADASTRO' varchar(40) default NULL,
'FONE' varchar(15) default NULL,
'FAX' varchar(15) default NULL,
'TELEX' varchar(15) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

O que devo fazer no VB para corrigir esse problema
a estrutura esta assim
DIM RS as ADODB
Set RS = New ADODB.Recordset
set RS.OPEN [Ô]SHOW CREATE TABLE EMPRESAS[Ô],minhaconexao,3,3

Isso acontece apenas com tabelas com vários campos, caso tenha pouco campo o resultado é correto

Agradeço a todos desde já
KERPLUNK 08/05/2012 10:55:06
#401528
Eu acho que de alguma maneira a string está cortando. Veja em que parte do seu código você pega o retorno do MySQL e veja se o campo não está pequeno demais ou se a variável em que você grava esse valor não está sendo cortada de alguma maneira...
ALVAROVB2009 08/05/2012 11:15:46
#401531
Kerplank obrigado pelo retorno

Eu tomei esse cuidado antes, más isso é o retono puro do código, eu não estou jogando em uma string, estou jogando esse retorno direto no arquivo txt
Print #x, rs(1) & [Ô];[Ô]

Por isso q fiquei perdido e sem saber o que fazer, pois isso esta vindo direto, achei estranho isso e não sei como resolver
KERPLUNK 08/05/2012 12:04:59
#401538
Pode mostrar o código todo que faz isso?
ALVAROVB2009 08/05/2012 12:11:10
#401539
sem problema

Dim rssAux As ADODB.Recordset
Set rssAux = New ADODB.Recordset

with lst
.
.
.
.
With rssAux
If UCase(strNomeTabela) = [Ô]EMPRESAS[Ô] Then

MsgBox [Ô]OK[Ô]
End If

.Open [Ô]SHOW CREATE TABLE [Ô] & strNomeTabela, cnn [ô]atualizo o recordset com a estrutura da tabela

Print #x, [Ô][Ô]
Print #x, [Ô]#[Ô]
Print #x, [Ô]# [Ô] & MSG_06 & strNomeTabela & [Ô][Ô]
smsg = [Ô]# [Ô] & MSG_06 & strNomeTabela & [Ô][Ô]
Set nodeX2 = lst.ListItems.Add(, , smsg)
nodeX2.EnsureVisible: DoEvents
frmBackup.Label1 = Left(frmBackup.Label1 & [Ô] [Ô] & Mid(.Fields.Item(1).Value, 1, InStr(.Fields.Item(1).Value, [Ô]([Ô]) - 1), 255): DoEvents
Print #x, [Ô]#[Ô]

Print #x, .Fields.Item(1).Value & [Ô];[Ô] [ô]Aqui jogo para o arquivo

.Close
End With
end with
ALVAROVB2009 08/05/2012 19:28:12
#401581
Alguém ...
KERPLUNK 08/05/2012 19:41:47
#401583
Só pra tirar uma suspeita, comenta a linha:
frmBackup.Label1 = Left(frmBackup.Label1 & [Ô] [Ô] & Mid(.Fields.Item(1).Value, 1, InStr(.Fields.Item(1).Value, [Ô]([Ô]) - 1), 255): DoEvents

e rode de novo...
ALVAROVB2009 08/05/2012 20:05:36
#401585
Essa linha ela apenas pela mostra qual é o comando que esta sendo montado, más eu fiz isso e continuou dando a mesma coisa.

Eu fiz um teste, abrindo o banco e sem deixar entrar na rotina e na janela do Immediate do debug
?.Fields.Item(1).Value

Me trouxe o resultado incompleto

Kerplank eu peguei o projeto aki no vbmania
http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=7887

Acho que assim daria para vc ver melhor, o projeto foi postado pelo Foxman, acabei de deixar uma mensagem lá para ele, quem sabe o pai da criança não consegue ajudar a gente rsrs
ALVAROVB2009 09/05/2012 09:13:24
#401610
Alguém ...
KERPLUNK 09/05/2012 09:33:56
#401613
O que estou vendo é que o campo onde aparece o script, está apenas com 255 caracteres. Nunca vi isso acontecer...
ALVAROVB2009 09/05/2012 09:54:20
#401615
Kerplunk obrigado pelo retorno
Concordo com vc no caso do script estar limitado, más não aos 255 caracteres, pois se fizer um len(.Fields.Item(1).Value ) ele vai dar como 704, isso no meu caso

E o que mais me intriga é o seguinte, no caso da exibição do campo
CREATE TABLE 'empresas' (
'EMPRESA' double default NULL,
'CGC' varchar(14) default NULL,
'NOME' varchar(48) default NULL,
'ENDERECO' varchar(30) default NULL,
'NUMERO' varchar(5) default NULL,
'COMPLEM' varchar(16) default NULL,
'CEP' varchar(8) default NULL,
'BAIRRO' varchar(16) default NULL,
'CIDADE' varchar(28) default N

Após esse N aparece um espaço enorme em branco uma vírgula e mais um espaço enorme em branco e como que ele ja deu um espaço nesse default para o N, sinceramente eu estou perdido nisso. Estou arrumando uma solução prévia para não ficar parado com isso, estou tirando essa parte que ele pega a criação das tabelas e ficarei apenas com a criação dos dados. Caso eu precise voltar alguma coisa, eu coloco o banco vazio e volto os dados, essa solução que achei.

Deixarei esse tópico aberto pois pretendo arrumar isso e espero que o pai da criança possa ajudar, porque no vb.net ele falou que esta corrigido.
Kerplunk ou mais alguém tiver mais alguma idéia posta ai, assim que eu arrumar uma solução definitiva eu postarei
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas