Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Excel/Access

Postades av 2003-02-05 13:43:24 - Sofia Svensson, i forum access, Tråden har 15 Kommentarer och lästs av 837 personer

Hej på er!
Jag har en accessapplikation som flyttar över data till excel (i form av en offert).
När användaren mixtrat med rabatter och dylikt så kan han klicka på en knapp i excel som då flyttar över de nya rabattsatserna tillbaka till access.
Det jag skulle vilja är att det då aktiva accessformuläret uppdateras samtidigt som datat förs över.
Hur kan jag i excel få ett formulär i access att uppdatera sig??
Om det ens går??

Tack!

Mvh,

Sofia


Svara

Sv: Excel/Access

Postades av 2003-02-05 14:08:12 - Andreas Hillqvist

Borde nog gå med:
<code>
Dim A As Access.Application
Set A = GetObject(, "Access.Application")
A.Screen.ActiveForm.Refresh
</code>
Förutsätter att du i excel har laggt till referens till Microsoft Access.


Svara

hmmmm

Postades av 2003-02-05 15:06:31 - Sofia Svensson

Hej Andreas!
Tack för hjälpen!

Detta var skumt!
Då formulärets recordsource är beroende av värden satta i excel så stoppar jag in dessa värden i dbn.
Sen lägger jag in det aktiva formulärets nya recordsource mha:
A.Screen.ActiveForm.RecordSource = strsql (där sqlstatsen ligger i var strsql)
Och för att uppdatera formuläret en
A.Screen.ActiveForm.Requery

Detta funkar kalas om jag stegar igenom koden, men om jag bara kör så uppdateras accessformuläret till blankt (dvs den hittar inga poster).
Har testat hur mycket som helst - stegar man igenom går den perfekt, kör man rakt på hittar den inget....

Datorerns underbara värld....

Mvh,

Sofia


Svara

Sv: hmmmm

Postades av 2003-02-05 20:23:07 - Andreas Hillqvist

Kan det var så att posten inte är sparad än?


Svara

Sv: hmmmm

Postades av 2003-02-05 20:47:15 - Sofia Svensson

Jo förmodligen är det så men frågan är varför datat "hinner" sparas om man stegar igenom men inte om man bara exekverar koden.

Tack för din hjälp!

/SOfian


Svara

Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-05 21:20:09 - Sofia Svensson

HEj igen!
Kanske en UpdateBatch() vore på sin plats. BAra det att den funktione inte finns i Excel.
Finns det kanske någon motsvarighet?

Mvh,

Lisa


Svara

UpdateBatch finns visst - sorry!

Postades av 2003-02-05 21:35:24 - Sofia Svensson


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-06 00:08:20 - Andreas Hillqvist

Hur sparar du posten i excel?


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-06 11:32:17 - Sofia Svensson

Det jag gör är att jag stoppar tillbaka datat i access.
Och det gör jag genom en sql-sats som jag kör mha db.execute strsql.
Medans jag testat varför det fungerar om man stegar genom koden men inte annars så lade jag in en loop på 10000000 varv som inte gör någonting bara för att få en fördröjning i exekveringen innan formulären ska uppdateras med de nya datat.
Och då funkar det också.

Den "hinner" alltså inte med att uppdatera dbn....

Mvh,

Sofia


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-06 13:29:24 - Andreas Hillqvist

Du kan ju prova med att använda databasen från Access:

<code>
Dim A As Access.Application
Dim db as DAO.Database
Set A = GetObject(, "Access.Application")
Set db = A.CurrentDB
db.Execute strSQL

'Gör uppdatering av formuär.

</code>


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-06 17:31:02 - Sofia Svensson

Hej!
Det går tyvärr inte då allt måste fångas direkt i ett excel-event.

Mvh,

Sofia.


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-06 19:36:58 - Andreas Hillqvist

KAn du inte bifoga hela din kod?
Så man vet vad det är du gör.


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-06 21:17:22 - Sofia Svensson

Hej Andreas!
Visst kan jag det, bifogar den delen som problemet berör.

Private Sub CmdSaveOffer_Click()
Dim File, Folder, FSO
Dim trayId As Integer, Discount, datum, customerId As String
Dim db As Database, rs As Recordset, strsql, AnnQuantity
Dim i

Discount = Worksheets(3).Range("F12")
AnnQuantity = Worksheets(3).Range("F11")
trayId = Worksheets(1).Range("C11")
customerId = Worksheets(1).Range("J15")

File = Worksheets(1).Range("C8")
Set db = OpenDatabase("C:\test_data.mdb")

'Nedanstående data måste uppdateras i accessdbn innan accessformuläret uppdateras
strsql = "INSERT INTO Offer(OfferId, TrayId, OfferDate, CreatedDate) VALUES ('" + CStr(File) + "', " + CStr(trayId) + ", '" + CStr(Format(Now(), "yyyy-MM-dd")) + "', '" + CStr(datum) + "');"
Application.DisplayAlerts = False
db.Execute strsql
Application.DisplayAlerts = True

db.Close

Dim A As Access.Application
Set A = GetObject(, "Access.Application")

Set db = OpenDatabase("C:\test_data.mdb")
strsql = "SELECT Tray.Discount, Tray.AnnualQuantity FROM Tray WHERE Tray.TrayId = " + CStr(trayId) + ";"
Set rs = db.OpenRecordset(strsql, dbOpenDynaset)

'Nedanstående data behövs också i accessdb innan formuläret uppdateras
If Not (rs.EOF And rs.BOF) Then
rs.Edit
rs!Discount = Discount * 100
rs!AnnualQuantity = annQuantity
rs.Update
End If

rs.Close
db.Close

' strsql = sqlsats som innehåller det nya datat bland annat
A.Screen.ActiveForm.RecordSource = strsql

'Provat alla nedanstående för säkerhets skull.... :-)
A.Screen.ActiveForm.Requery
A.Screen.ActiveForm.Refresh
A.Screen.ActiveForm.Repaint

'Detta var den koden som berörs av problemet

End Sub


Jag har provat att lägga in doevents och lite loopar här och var men det är instabilt.
Skulle behöva en funktion som kan kolla när uppdateringen av access är gjord.

Mvh,

Sofia


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-06 22:44:51 - Andreas Hillqvist

Jag Har lite förslag på förändringar:
<code>
Function SQLText(ByVal Value As String) As String
If Len(Value) Then
SQLText = "'" & Replace(Value, "'", "''") & "'"
Else
SQLText = "Null"
End If
End Function

Private Function GetForm(Forms As Access.Forms, Name As String) As Access.Form
Dim Form As Access.Form
For Each Form In Forms
If Form.Name = Name Then
Set GetForm = Form
Exit For
End If
Next
End Function

Private Sub cmdSaveOffer_Click()
'Dim File, Folder, FSO
Dim db As Database
Dim rs As Recordset
Dim A As Access.Application
Dim frmForm As Access.Form
Dim strSQL As String, customerId As String
Dim AnnQuantity, Discount, datum
Dim trayId As Long, i As Long
Dim FileName As String
On Error GoTo cmdSaveOffer_Click_Err

File = Worksheets(1).Range("C8")
trayId = Worksheets(1).Range("C11")
Discount = Worksheets(3).Range("F12")
customerId = Worksheets(1).Range("J15")
AnnQuantity = Worksheets(3).Range("F11")

FileName = "C:\test_data.mdb"
Set A = GetObject(, "Access.Application")
If A Is Nothong Then
Set db = OpenDatabase(FileName)
Else
Set db = A.CurrentDb
If Right$(db, 13) <> "test_data.mdb" Then
Set db = OpenDatabase(FileName)
End If
End If

'Application.DisplayAlerts = False

'Nedanstående data måste uppdateras i accessdbn innan accessformuläret uppdateras
strSQL = "INSERT INTO Offer(OfferId, TrayId, OfferDate, CreatedDate) VALUES (" & SQLText(File) & ", " & trayId & ", " & SQLText(Format(Date, "yyyy-MM-dd")) & ", " & SQLText(datum) & ");"
db.Execute strSQL, dbFailOnError

'Nedanstående data behövs också i accessdb innan formuläret uppdateras
strSQL = "UPDATE Tray SET Tray.Discount = " & Discount * 100 & ", Tray.AnnualQuantity = " & AnnQuantity & " WHERE Tray.TrayId = " & trayId & ";"
db.Execute strSQL, dbFailOnError

'Application.DisplayAlerts = True

' strsql = sqlsats som innehåller det nya datat bland annat
Set frmForm = GetForm(A.Forms, "Ditt formulärnamn")
If Not frmForm Is Nothing Then
frmForm.RecordSource = "SELECT Tray.Discount, Tray.AnnualQuantity FROM Tray WHERE Tray.TrayId = " & trayId & ";"
End If

cmdSaveOffer_Click_Exit:
Exit Sub

cmdSaveOffer_Click_Err:
Select Case Err.Number
Case 429 ' Access är inte igång.
Resume Next
Case Else
MsgBox Err.Description, vbCritical, Err.Source
End Select
End Sub
</code>
Du får ersätta "Ditt formulärnamn" med namnet på ditt formulär. Exempel: "frmTrayDiscount"


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-07 09:13:12 - Sofia Svensson

Hej Andreas!
Tyvärr resulterar detta i precis samma problem.
Och jag måste säga att jag förstår inte vad det skulle göra för skillnad att hitta det aktiva formuläret via getForms-funktionen istället för via a.screen.activeForm.Name?

Tack snälla för att du försökte hjälpa till!

Mvh,

Sofia


Svara

Sv: Excels motsvarighet till VBs UpdateBatch

Postades av 2003-02-07 12:39:01 - Andreas Hillqvist

Det är för att göra en kontroll att rätt formulär har focus. Man kan ju öppna ett annat formulär i access innan man trycker på Uppdateringsknappen. Det gör koden lite stabilare.
Met GetForm uppdaterar bara formuläret om det är öppet öppet. Oavsett om det har fokus eller inte.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 768
27 960
271 761
1 353
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies