startuga Posted May 30, 2014 at 08:27 AM Report #557643 Posted May 30, 2014 at 08:27 AM Por algum motivo o código não funciona e não consigo descobrir o problema :C Dim data_time As String data_time = Now() Dim Conn As ADODB.Connection Dim strConn As String Dim strSQL As String Set Conn = New ADODB.Connection strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\udj003\Desktop\QA\NEW V1.0\Mapa Pesos e Ciclos.mdb" strSQL = "INSERT INTO historico (molde, peso_arranque, ciclo_arranque, ta_peso1, ta_ciclo1, ta_peso2, ta_ciclo2, data) VALUES (" & txt_mold.Value & " ; " & txt_peso_arranque.Value & " ; " & txt_ciclo_arranque.Value & " ; " & txt_ta_peso1.Value & " ; " & txt_ta_ciclo1.Value & " ; " & txt_ta_peso2.Value & " ; " & txt_ta_ciclo2.Value & " ; " & data_time & ")" Conn.Open strConn Conn.Execute strSQL Set myConn = Nothing
bioshock Posted May 30, 2014 at 08:37 AM Report #557647 Posted May 30, 2014 at 08:37 AM Talvez porque a query não deve levar ";" no meio dela..? http://www.w3schools.com/sql/sql_insert.asp
startuga Posted May 30, 2014 at 08:43 AM Author Report #557650 Posted May 30, 2014 at 08:43 AM já corrigido dá-me o seguinte erro Syntax erro (missing operator) in query expression ' '
nelsonr Posted May 30, 2014 at 08:51 AM Report #557654 Posted May 30, 2014 at 08:51 AM Faz debug e vê o que está a ficar no strSQL. Que conteúdo tens nas variaveis usadas? Se for texto tens de por entre plicas. Se for decimal, tens de certificar que fica com o ponto como separador E confirmar que nenhum está vazio (se não for texto)
startuga Posted May 30, 2014 at 08:58 AM Author Report #557655 Posted May 30, 2014 at 08:58 AM este é o unico campo com texto (" & txt_mold.Value & ") como deve de ir?
nelsonr Posted May 30, 2014 at 09:00 AM Report #557656 Posted May 30, 2014 at 09:00 AM ('" & txt_mold.Value & "'')
startuga Posted May 30, 2014 at 01:07 PM Author Report #557672 Posted May 30, 2014 at 01:07 PM Dim data_time As String data_time = Now() Dim Conn As Object Set Conn = CreateObject("ADODB.Connection") Dim cn As Object Dim rs As Object Dim strSQL As String Dim strConnection As String Set cn = CreateObject("ADODB.Connection") strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=C:\QA\QA\NEW V1.0\Mapa Pesos e Ciclos.mdb" strSQL = "INSERT INTO historico (molde, peso_arranque, ciclo_arranque, ta_peso1, ta_ciclo1, ta_peso2, ta_ciclo2, data) VALUES ('" & txt_mold.Value & "'' , " & txt_peso_arranque.Value & " , " & txt_ciclo_arranque_value.Value & " , " & txt_ta_peso1.Value & " , " & txt_ta_ciclo1.Value & " , " & txt_ta_peso2.Value & " , " & txt_ta_ciclo2.Value & " , " & data_time & ")" cn.Open strConnection Set rs = cn.Execute(strSQL) 'rs.Fields (0) rs.Close Set rs = Nothing cn.Close Set cn = Nothing Rebenta aqui (Set rs = cn.Execute(strSQL)) http://postimg.org/image/rngwe5gtj/
startuga Posted May 30, 2014 at 02:02 PM Author Report #557677 Posted May 30, 2014 at 02:02 PM Working NOW Dim data_time As String data_time = Date Dim Conn As Object Set Conn = CreateObject("ADODB.Connection") Dim cn As Object Dim rs As Object Dim strSQL As String Dim strConnection As String Set cn = CreateObject("ADODB.Connection") strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=C:\QA\QA\NEW V1.0\Mapa Pesos e Ciclos.mdb" strSQL = "INSERT INTO historico (molde, peso_arranque, ciclo_arranque, ta_peso1, ta_ciclo1, ta_peso2, ta_ciclo2, data) VALUES ('" & txt_mold & "' , " & txt_peso_arranque & " , " & txt_ciclo_arranque_value & " , " & txt_ta_peso1 & " , " & txt_ta_ciclo1 & " , " & txt_ta_peso2 & " , " & txt_ta_ciclo2 & " , '" & data_time & "' )" cn.Open strConnection Set rs = cn.Execute(strSQL) Set rs = Nothing cn.Close Set cn = Nothing Apenas uma pequena dúvida, como faço para verificar se a informação já existe na DB?
Rechousa Posted May 30, 2014 at 10:03 PM Report #557715 Posted May 30, 2014 at 10:03 PM Viva, Para um problema novo, é regra criar um tópico novo 😉 Relativamente à questão, podes fazê-lo usando o statement SELECT, exemplo: SELECT id, molde, peso_arranque, ciclo_arranque, ta_peso1, ta_ciclo1, ta_peso2, ta_ciclo2, data FROM historico WHERE id = 12345 Nota: 12345 é um exemplo É também uma boa prática usar queries com parâmetros, exemplo: string strSQL = "SELECT id, molde, peso_arranque, ciclo_arranque, ta_peso1, ta_ciclo1, ta_peso2, ta_ciclo2, data FROM historico WHERE id = ?"; O mesmo deverás fazer para todas as queries, incluindo o INSERT que tens acima. Desta forma prevines ataques de injeção por SQL. Nota: Não domino access, pelo que usei a seguinte fonte, recomendo que a consultes para veres o restante código http://www.mikesdotnetting.com/Article/26/Parameter-Queries-in-ASP.NET-with-MS-Access Espero ter ajudado, Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa
startuga Posted June 2, 2014 at 02:47 PM Author Report #557918 Posted June 2, 2014 at 02:47 PM Boas, Obrigado pelas dicas 🙂 Este é o meu código, já consigo retornar se o record existe mas se não existir o programa rebenta logo nem dá msgbox a dizer false :c Alguem me sabe explicar porque? Dim conn As Object Set conn = CreateObject("ADODB.Connection") Dim cn As Object Dim rs As Object Dim strSQL As String Dim strConnection As String Set cn = CreateObject("ADODB.Connection") strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=C:\QA\QA\NEW V1.0\Mapa Pesos e Ciclos.mdb" strSQL = "SELECT molde FROM historico WHERE molde = ('" & txt_mold & "' )" cn.Open strConnection Set rs = cn.Execute(strSQL) If rs.Fields() > 1 Then MsgBox ("true") Else MsgBox ("False") End If rs.Close Set rs = Nothing cn.Close Set cn = Nothing
FRSHE Posted June 5, 2014 at 04:20 PM Report #558372 Posted June 5, 2014 at 04:20 PM (edited) O txt_mold é uma variavel? ou é uma textbox ? se for textbox acho que tens de meter txt_mold.text. Em relação ao rs.fields() acho que se meteres rs.EOF = false then msgbox ("true) resulta 🙂 Edited June 5, 2014 at 04:21 PM by FRSHE
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now