|
Hello !
I have a partial class that is generated automatically . Each property is defined without Set get.
I have created manually another partial class where I have defined the same properties with Set , get.
But I'm getting error for duplicate properties.
Is anything I can do on my partial class ( that I have created manually ) , in order to not get error messages ? ( I mean without deleting the auto-generated partial classes )
Thank you !
|
|
|
|
|
satc wrote: Each property is defined without Set get. I assume you mean that the auto-generated properties are auto-properties (as properties must have a getter or setter at least, otherwise it would be a field).
One option would be to delete the auto-generated properties from the auto-generated partial class. Which obviously has the disadvantage that you need to do this every time the code is newly generated.
If the code for the getter/setter you're implementing is only for INotifyPropertyChanged and/or similar generic stuff, you could probably edit the T4-template for the code-generator, as previously suggested by Dave.
Or edit the T4-template so that the properties aren't generated at all.
Another potential option would be to name the properties in your manual partial class differently or edit the T4-template to name the auto-generated properties differently (with a prefix or suffix). But I don't know how that would work out with EF; you would have to test it.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
I've read somewhere about using MetadataType on my manual Partial class , but I don't know if this can be used in my case ?
If yes , how ?
Thank you !
|
|
|
|
|
satc wrote: I've read somewhere about using MetadataType on my manual Partial class , but I don't know if this can be used in my case ? I wouldn't know how it could help here, seems completely unrelated to me.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
I found this article :
http://forums.asp.net/t/1885808.aspx?Update+edmx+file+without+effecting+currently+generated+model[^]
Look at the last post.
I've done exactly the same thing , but doesn't work for me.
I Don't know why ?
This is my code :
Original classes ( auto generated )
Partial Public Class Myobj1
Public Property id As Integer
Public Property prc As Decimal
Public Property categ As Integer
End Class
My partial classes using the article suggestion :
Imports System.Collections.Generic
Imports System.ComponentModel
Imports MyProg.MyObj1
<MetadataType(GetType(MyObj1MetaData))> Partial Public Class Myobj1
Friend NotInheritable Class Myobj1MetaData
Implements INotifyPropertyChanged
Private privatprc As Decimal
Public Property prc() As Decimal
Get
Return privatprc
End Get
Set(ByVal value As Decimal)
privatprc = value
OnPropertyChanged("prc")
End Set
End Property
Private privatcateg As Integer
Public Property categ() As Integer
Get
Return privatcateg
End Get
Set(ByVal value As Integer)
privatcateg = value
OnPropertyChanged("categ")
End Set
End Property
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Private Sub OnPropertyChanged(ByVal propertyc As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyc))
End Sub
End Class
End Class
This code shows no error , but the InotifypropertChanged that I want to implement , it's not working at all.
|
|
|
|
|
I see how you might get the idea that it could help here but the thing is: It's only intended to be able to provide attributes to auto-generated properties without them being overwritten by EF when the entities-classes are newly generated. The properties in the meta-data-class that's being assigned to an entity-class by the MetadataTypeAttribute only serve the purpose of matching by name to the auto-generated properties through reflection. Any code in their getters/setters will be ignored because they're never actually called.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
How to know the file size of any format (mp3 , text , or exe ,etc) using vb code and store , plz help me , suggest something useful.
Thank you
|
|
|
|
|
File size "of any format"? There's no such thing. File size is determined by the complete content of the file, not the content format.
|
|
|
|
|
Use system.IO to locate the file and read the attributes, one if which is the size. this does not care what the format of the file is!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hello !
I'm using entity framework 6.0 , DBContext ,Database First.
I have created the model form an existing database using step by step wizard.
In some classes , I need to implement INotifyPropertyChanged , so I have created some partial classes ( outside the model class files ).
Everyhting is working , but I have problems when I change something on database and I need to update the model from database.
Because the model is recreated with all classes , and I get errors like this :
Error 103 'Public Property dt1 As Date' has multiple definitions with identical signatures.
So I have to manually delete all the duplicates from model classes and to keep those in partial classes where I have implement INotifyPropertyChanged.
But if I update again the model , the classes are recreated again , and I have the same problem.
Is there any way to resolve this problem?
Thank you !
|
|
|
|
|
There's nothing you can do to prevent the classes from being recreated so you can't put your code on them.
But all may not be lost. As far as I remember reading (it's been a long time!), Database First generates templates that can be modified where you can put your code that will show up in the generated classes. I don't have an example of this as I've never used Database First. I always use Code First.
Search your project for *.tt files. These are the T4 templates that you need to modify. You can read more about these templates here[^]. Of course, there's always Google[^] for even more information.
|
|
|
|
|
In a VB.NET 2008 desktop application, I need to add some initial selections with a corresponding button to the 'main' form, before any of the normal
processing is allowed to occur. Thus due to that fact, I have the following questions to ask:
1. This application is using a System.Windows.Forms.MainMenu and I would like the 'File' option to not display until the 'new' button is clicked? If this is
possible, would you showe me the code for this to occur?
2. If option #1 is not possible, is there a way to make System.Windows.Forms.MainMenu not display until the the 'new' button is clicked? If this is possible,
would you show me the code for this to occur?
3. In this application there is code that adds menu items with logic like,
MainMenu1.MenuItems(0).MenuItems.Add("New Item", New EventHandler(AddressOf ClickHandler))
MainMenu1.MenuItems(0).MenuItems.Add("-")
Is there a way to modify the order of list of menuitems after the menu items have already been created? Would I need to delete the menuitems at that point and create the menuitems again? Thus would you show me the code for this option and/or let me know if this option is not possible?
|
|
|
|
|
1. Set the menu item's visibility property to False so it will not show on the form. You then set it to True when required.
2. NA
3. You would need to delete them and re-insert them.
|
|
|
|
|
In response to your answers, I have the following questions:
"Set the menu item's visibility property to False so it will not show on the form. You then set it to True when required." I placed the following code in the application, and it did not work:
MainMenu1.MdiListItem.Visible = False
Thus can you show me the code to Set the menu item's visibility property to False?
Also would you show me the code on how to 'You would need to delete them and re-insert them' the menuitems? The menu items are currently created in the gui and not in code.
|
|
|
|
|
classy_dog wrote: can you show me the code to Set the menu item's visibility property to False? The code you have should do it, I just tested it on my sample and it works fine.
The menu items are created in code within the form designer, whose code can be viewed, so you can see how it is created. You can also read the MSDN documentation[^] for full details.
|
|
|
|
|
Can u please tell me how to get internet time using a http request. i have a class named clsHttpRequests. But i know not know how to do that using vb6.
|
|
|
|
|
|
|
Hi All,
Hope I've got the correct forum.
I am writing code to copy data from one server to another. The database name and table is the same on both servers. The code I have written is as follows:
Function MoveDataToOtherServer() As Boolean
Dim conSource, conTarget As New SqlClient.SqlConnection
Dim cmdSource, cmdTarget As New SqlClient.SqlCommand
Dim strServerSource, strServerTarget As String
Dim strDatabase, strUsername, strPassword As String
Dim strColNames As String
Dim intCount As Integer
MoveBetsToOtherServer = False
strServerSource = "SERVERSource"
strDatabase = "testDBase"
strUsername = "sa"
strPassword = "password"
strServerTarget = "SERVERTarget"
Try
conSource.ConnectionString = "Data Source="& strServerSource & "; Initial Catalog=" &"strDatabase"& "; Integrated Security=False; User ID=& "strUsername & "; Password=" &"; strPassword &"; Connect Timeout=30"
conSource.Open()
cmdSource.Connection = conSource
conTarget.ConnectionString = "Data Source="& strServerTarget & "; Initial Catalog=" &"strDatabase"& "; Integrated Security=False; User ID=& "strUsername & "; Password=" &"; strPassword &"; Connect Timeout=30"
conTarget.Open()
cmdTarget.Connection = conTarget
cmdTarget.CommandText = "INSERT INTO SERVERTarget.dbo.testDBase.testTbl (" & " strColNames & ") SELECT " & "; strColNames & " FROM SERVERSource.dbo.testDBase.testTbl;"
intCount = cmdTarget.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
conSource.Close()
conTarget.Close()
End Try
End Function
The ExecuteNonQuery() generates this message:
Could not find the server name 'SERVERSource' in sys.server. Werify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.
Now I could make them linked servers but am not sure what effects this has later or on other code. I suppose I have 2 questions:
1: Is there a down side to linking the servers
2: If there is, is there another way I can copy across the data?
|
|
|
|
|
Is the server that you want to copy data from really named "SERVERSource"?
I doubt it is. If you can create a linked server (requires the same information as a connectionstring), then you can simply execute the command using any command line against the server - no need for code.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I attempted a small VBA Sub() in Excel 2013 with the intent of:
- iterating through a list of high volume ETFs on the Main worksheet,
- creating a Web Query for each ETF to access Security Holdings info for each ETF,
- pull that data into an individual worksheet for each ETF.
My issue is getting past the Fidelity secure access. The code below processes my password input correctly, but not my username. Being logged into the Fidelity website in an open browser session does not allow the web query access to the ETF data pages.
Can anyone tell me why the username portion of the code is failing? Is there an easier way for me to skin this cat?
Thanks
=====
Sub Update()
' Requires a reference to MICROSOFT INTERNET CONTROLS object
On Error GoTo ErrorOut:
Dim wbThis As Workbook: Set wbThis = ThisWorkbook
Dim wsMain As Worksheet: Set wsMain = wbThis.Worksheets("Main")
Dim objIntExp As InternetExplorer: Set objIntExp = New InternetExplorer
Dim objIntExpDoc As Object
Dim objIntExpDocElmt As Object
Dim wsData As Worksheet
Dim strUsername As Long
Dim strPassword As String
Dim lngDateLast As Long
Dim lngDateCurrent As Long
Dim strSymbol As String
Dim strQuery As String
Dim lngRow As Long
Dim lngLength As Long
Dim lngLastSymbolRow As Long
Const str_LOGIN_PAGE As String = "https://oltx.fidelity.com/ftgw/fbc/ofsummary/defaultPage"
Const str_START As String = "http://research2.fidelity.com/fidelity/screeners/etf/etfholdings.asp?symbol="
Const str_END As String = "&view=Sector"
Const lng_SYMBOL_LENGTH_MIN As Long = 3
Const lng_SYMBOL_LENGTH_MAX As Long = 5
Const lng_SYMBOL_ROW_MIN As Long = 2
Const lng_SYMBOL_ROW_MAX As Long = 21
' Check for a new date
lngDateLast = CLng(wsMain.Cells(5, 3))
lngDateCurrent = CLng(Date)
If lngDateLast >= lngDateCurrent Then
MsgBox "TRY AGAIN", vbOKOnly, "Data is already current!"
Exit Sub
End If
' Delete any existing data sheets
If wbThis.Worksheets.Count > 1 Then
Application.DisplayAlerts = False
For Each wsData In wbThis.Worksheets
If wsData.Name <> "Main" Then
wsData.Delete
End If
Next wsData
Application.DisplayAlerts = True
End If
' Get the last symbol row
lngLastSymbolRow = wsMain.Range("A100").End(xlUp).Row
If lngLastSymbolRow > lng_SYMBOL_ROW_MAX Then
lngLastSymbolRow = lng_SYMBOL_ROW_MAX
End If
If lngLastSymbolRow < lng_SYMBOL_ROW_MIN Then
MsgBox "TRY AGAIN", vbOKOnly, "No ETF Symbols detected in Column-A to process!"
Exit Sub
End If
' Set the Username and Password
strUsername = Trim(CStr(InputBox("Enter your Fidelity Username for login.", "FIDELITY USERNAME")))
strPassword = Trim(CStr(InputBox("Enter your Fidelity Password for login.", "FIDELITY PASSWORD")))
' Next line not required, but helps for debugging
objIntExp.Visible = True
' Go to Fidelity LogIn page
objIntExp.Navigate str_LOGIN_PAGE
Do While objIntExp.Busy: DoEvents: Loop
Do Until objIntExp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop
' Login with user inputs
Set objIntExpDoc = objIntExp.Document
Debug.Print "Form = " & objIntExpDoc.forms(0).Name
Set objIntExpDocElmt = objIntExpDoc.getElementByID("userId-select")
objIntExpDocElmt.Value = strUsername
Debug.Print objIntExpDocElmt.Name & " = " & objIntExpDocElmt.Value
Set objIntExpDocElmt = objIntExpDoc.getElementByID("password")
' Note - password disappears here!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
objIntExpDocElmt.Value = strPassword
Debug.Print objIntExpDocElmt.Name & " = " & objIntExpDocElmt.Value
objIntExpDoc.forms(0).submit
Do While objIntExp.Busy: DoEvents: Loop
Do Until objIntExp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop
' Cycle through all symbols
For lngRow = lng_SYMBOL_ROW_MIN To lngLastSymbolRow Step 1
strSymbol = Trim(CStr(wsMain.Cells(lngRow, 1)))
lngLength = Len(strSymbol)
If (lngLength < lng_SYMBOL_LENGTH_MIN) Or (lngLength > lng_SYMBOL_LENGTH_MAX) Then
' Invalid symbol ... skip it
GoTo GetNextSymbol:
End If
' Build the web query URL
strQuery = str_START & strSymbol & str_END
' Add a new worksheet
wbThis.Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = strSymbol
' Get the raw ETF query data
With wsMain.QueryTables.Add(Connection:=strQuery, Destination:=Worksheets(strSymbol).Range("A1"))
.Name = strSymbol & "_Query"
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
GetNextSymbol:
Next lngRow
' Refresh the date
wsMain.Cells(5, 3) = lngDateCurrent
NormalExit:
Application.DisplayAlerts = True
GoTo Cleanup:
ErrorOut:
MsgBox "Unable to update data!", vbOKOnly, "UPDATE ERROR"
Cleanup:
Application.DisplayAlerts = True
Set objIntExpDocElmt = Nothing
Set objIntExpDoc = Nothing
Set objIntExp = Nothing
Set wsData = Nothing
Set wsMain = Nothing
Set wbThis = Nothing
End Sub
|
|
|
|
|
There were no inputs to my question but (if anyone cares) I did solve this issue with help from some other developers.
1.) Some web sites (Fidelity included) mask the USERNAME and/or PASSWORD user input. If you drill into the source code for these style of HTML INPUT objects, they will have dual <INPUT> ... </INPUT> lines for the same object. One will be unmasked and the other masked. Choose the INPUT object ID defined in the masked input line to pass a value to the object.
2.) My QueryTable.Add line from above was also causing erors. Upon further review of the QueryTable object model, the required RANGE parameter "must be on the worksheet that contains the QueryTable object". I was attempting to add the QueryTable to the MAIN worksheet and extract data to individual DATA worksheets. I revised the code to add the web query to each individual DATA worksheet.
Adios
|
|
|
|
|
My bad - I spoke too soon about solving the login problem.
When my solution above failed, I started poking around the secure Login page source code as I manually entered Username and Password info on the site.
The actual username value in the Masked input control gets stuffed into the Element's "data-unmasked" Attribute. The Element's Value is an altered variation of the username with "*" fillers replacing all but the last three characters. The form will not login without the "data-unmasked" Attribute being set.
It appears I need to:
- find a way to stuff a new value into an empty Element Attribute
... or ...
- revert to use of the error prone SendKeys option to actually type the username into the input control character by character.
Any hints or tips?
|
|
|
|
|
Hi there!
I'm using the HTMLTextbox from here: [^]
And my Question is how can I change the Font, Fontsize, ....
My Usage:
Private Sub Message_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Message.TextChanged
MessageHTML.Text = Me.Message.GenerateHTML
End Sub
as you can see, everytime my Text in Message is changed my HTML code will be generated, and it works great!
For changing the Font I use:
Private Sub FontBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FontBox.SelectedIndexChanged
Message.SelectionFont = New Font(FontBox.Text, FontSize.Text.ToString)
End Sub
And for the Size the same:
Private Sub FontSize_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FontSize.SelectedIndexChanged
Message.SelectionFont = New Font(FontBox.Text, FontSize.Text.ToString)
End Sub
But I don't know how to update my MessageHTML Textfield.
Really hope someone can help!
Thanks
|
|
|
|
|
If you have a question about code from an article, use the forum at the bottom of that article. The author of the code is the person most likely to be able to help you with the code they've written.
HTML Text Box Control ⇒ Comments[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|